[all-commits] [llvm/llvm-project] 899fe2: [CVP][LVI] Fix incorrect scalar type when getting ...

Luke Lau via All-commits all-commits at lists.llvm.org
Fri Jul 5 01:48:19 PDT 2024


  Branch: refs/heads/users/wangpc-pp/spr/main.riscv-support-select-optimization
  Home:   https://github.com/llvm/llvm-project
  Commit: 899fe2cf318f6e3c7a183125ff17ef53944b2989
      https://github.com/llvm/llvm-project/commit/899fe2cf318f6e3c7a183125ff17ef53944b2989
  Author: goldsteinn <35538541+goldsteinn at users.noreply.github.com>
  Date:   2024-07-04 (Thu, 04 Jul 2024)

  Changed paths:
    M llvm/lib/Analysis/LazyValueInfo.cpp
    M llvm/test/Transforms/CorrelatedValuePropagation/vectors.ll

  Log Message:
  -----------
  [CVP][LVI] Fix incorrect scalar type when getting constant folded vec (#97682)

Fixes #97674

After #97428 added support for vectors, our constant ranges can now be
from splat vectors so when they reduce to a singe constant value, we
need to return the original type as opposed to just an int.


  Commit: a2ed21648c5faa148037f9e022fccdcb5178cbc3
      https://github.com/llvm/llvm-project/commit/a2ed21648c5faa148037f9e022fccdcb5178cbc3
  Author: Nikita Popov <npopov at redhat.com>
  Date:   2024-07-04 (Thu, 04 Jul 2024)

  Changed paths:
    M llvm/lib/Analysis/LazyValueInfo.cpp

  Log Message:
  -----------
  [LVI] Simplify the getPredicateResult() implementation (NFC)

By using ConstantRange::icmp().


  Commit: 97a2bd8415dc6792b99ec0f091ad7570673c3f37
      https://github.com/llvm/llvm-project/commit/97a2bd8415dc6792b99ec0f091ad7570673c3f37
  Author: Alexander Belyaev <pifon at google.com>
  Date:   2024-07-04 (Thu, 04 Jul 2024)

  Changed paths:
    M mlir/include/mlir/Dialect/SCF/IR/SCFOps.td
    M mlir/include/mlir/Dialect/SCF/Utils/Utils.h
    M mlir/include/mlir/Interfaces/LoopLikeInterface.h
    M mlir/lib/Dialect/SCF/IR/SCF.cpp
    M mlir/lib/Dialect/SCF/TransformOps/SCFTransformOps.cpp
    M mlir/lib/Dialect/SCF/Transforms/ParallelLoopFusion.cpp
    M mlir/lib/Dialect/SCF/Utils/Utils.cpp
    M mlir/lib/Interfaces/LoopLikeInterface.cpp
    M mlir/test/Dialect/SCF/transform-loop-fuse-sibling.mlir

  Log Message:
  -----------
  Revert "[mlir][loops] Reland Refactor LoopFuseSiblingOp and support parallel fusion #94391 (#97607)"

This reverts commit edbc0e30a9e587cee1189be023b9385adc2f239a.

Reason for rollback. ASAN complains about this PR:

==4320==ERROR: AddressSanitizer: heap-use-after-free on address 0x502000006cd8 at pc 0x55e2978d63cf bp 0x7ffe6431c2b0 sp 0x7ffe6431c2a8
READ of size 8 at 0x502000006cd8 thread T0
    #0 0x55e2978d63ce in map<llvm::MutableArrayRef<mlir::BlockArgument> &, llvm::MutableArrayRef<mlir::BlockArgument>, nullptr> mlir/include/mlir/IR/IRMapping.h:40:11
    #1 0x55e2978d63ce in mlir::createFused(mlir::LoopLikeOpInterface, mlir::LoopLikeOpInterface, mlir::RewriterBase&, std::__u::function<llvm::SmallVector<mlir::Value, 6u> (mlir::OpBuilder&, mlir::Location, llvm::ArrayRef<mlir::BlockArgument>)>, llvm::function_ref<void (mlir::RewriterBase&, mlir::LoopLikeOpInterface, mlir::LoopLikeOpInterface&, mlir::IRMapping)>) mlir/lib/Interfaces/LoopLikeInterface.cpp:156:11
    #2 0x55e2952a614b in mlir::fuseIndependentSiblingForLoops(mlir::scf::ForOp, mlir::scf::ForOp, mlir::RewriterBase&) mlir/lib/Dialect/SCF/Utils/Utils.cpp:1398:43
    #3 0x55e291480c6f in mlir::transform::LoopFuseSiblingOp::apply(mlir::transform::TransformRewriter&, mlir::transform::TransformResults&, mlir::transform::TransformState&) mlir/lib/Dialect/SCF/TransformOps/SCFTransformOps.cpp:482:17
    #4 0x55e29149ed5e in mlir::transform::detail::TransformOpInterfaceInterfaceTraits::Model<mlir::transform::LoopFuseSiblingOp>::apply(mlir::transform::detail::TransformOpInterfaceInterfaceTraits::Concept const*, mlir::Operation*, mlir::transform::TransformRewriter&, mlir::transform::TransformResults&, mlir::transform::TransformState&) blaze-out/k8-opt-asan/bin/mlir/include/mlir/Dialect/Transform/Interfaces/TransformInterfaces.h.inc:477:56
    #5 0x55e297494a60 in apply blaze-out/k8-opt-asan/bin/mlir/include/mlir/Dialect/Transform/Interfaces/TransformInterfaces.cpp.inc:61:14
    #6 0x55e297494a60 in mlir::transform::TransformState::applyTransform(mlir::transform::TransformOpInterface) mlir/lib/Dialect/Transform/Interfaces/TransformInterfaces.cpp:953:48
    #7 0x55e294646a8d in applySequenceBlock(mlir::Block&, mlir::transform::FailurePropagationMode, mlir::transform::TransformState&, mlir::transform::TransformResults&) mlir/lib/Dialect/Transform/IR/TransformOps.cpp:1788:15
    #8 0x55e29464f927 in mlir::transform::NamedSequenceOp::apply(mlir::transform::TransformRewriter&, mlir::transform::TransformResults&, mlir::transform::TransformState&) mlir/lib/Dialect/Transform/IR/TransformOps.cpp:2155:10
    #9 0x55e2945d28ee in mlir::transform::detail::TransformOpInterfaceInterfaceTraits::Model<mlir::transform::NamedSequenceOp>::apply(mlir::transform::detail::TransformOpInterfaceInterfaceTraits::Concept const*, mlir::Operation*, mlir::transform::TransformRewriter&, mlir::transform::TransformResults&, mlir::transform::TransformState&) blaze-out/k8-opt-asan/bin/mlir/include/mlir/Dialect/Transform/Interfaces/TransformInterfaces.h.inc:477:56
    #10 0x55e297494a60 in apply blaze-out/k8-opt-asan/bin/mlir/include/mlir/Dialect/Transform/Interfaces/TransformInterfaces.cpp.inc:61:14
    #11 0x55e297494a60 in mlir::transform::TransformState::applyTransform(mlir::transform::TransformOpInterface) mlir/lib/Dialect/Transform/Interfaces/TransformInterfaces.cpp:953:48
    #12 0x55e2974a5fe2 in mlir::transform::applyTransforms(mlir::Operation*, mlir::transform::TransformOpInterface, mlir::RaggedArray<llvm::PointerUnion<mlir::Operation*, mlir::Attribute, mlir::Value>> const&, mlir::transform::TransformOptions const&, bool) mlir/lib/Dialect/Transform/Interfaces/TransformInterfaces.cpp:2016:16
    #13 0x55e2945888d7 in mlir::transform::applyTransformNamedSequence(mlir::RaggedArray<llvm::PointerUnion<mlir::Operation*, mlir::Attribute, mlir::Value>>, mlir::transform::TransformOpInterface, mlir::ModuleOp, mlir::transform::TransformOptions const&) mlir/lib/Dialect/Transform/Transforms/TransformInterpreterUtils.cpp:234:10
    #14 0x55e294582446 in (anonymous namespace)::InterpreterPass::runOnOperation() mlir/lib/Dialect/Transform/Transforms/InterpreterPass.cpp:147:16
    #15 0x55e2978e93c6 in operator() mlir/lib/Pass/Pass.cpp:527:17
    #16 0x55e2978e93c6 in void llvm::function_ref<void ()>::callback_fn<mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int)::$_1>(long) llvm/include/llvm/ADT/STLFunctionalExtras.h:45:12
    #17 0x55e2978e207a in operator() llvm/include/llvm/ADT/STLFunctionalExtras.h:68:12
    #18 0x55e2978e207a in executeAction<mlir::PassExecutionAction, mlir::Pass &> mlir/include/mlir/IR/MLIRContext.h:275:7
    #19 0x55e2978e207a in mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) mlir/lib/Pass/Pass.cpp:521:21
    #20 0x55e2978e5fbf in runPipeline mlir/lib/Pass/Pass.cpp:593:16
    #21 0x55e2978e5fbf in mlir::PassManager::runPasses(mlir::Operation*, mlir::AnalysisManager) mlir/lib/Pass/Pass.cpp:904:10
    #22 0x55e2978e5b65 in mlir::PassManager::run(mlir::Operation*) mlir/lib/Pass/Pass.cpp:884:60
    #23 0x55e291ebb460 in performActions(llvm::raw_ostream&, std::__u::shared_ptr<llvm::SourceMgr> const&, mlir::MLIRContext*, mlir::MlirOptMainConfig const&) mlir/lib/Tools/mlir-opt/MlirOptMain.cpp:408:17
    #24 0x55e291ebabd9 in processBuffer mlir/lib/Tools/mlir-opt/MlirOptMain.cpp:481:9
    #25 0x55e291ebabd9 in operator() mlir/lib/Tools/mlir-opt/MlirOptMain.cpp:548:12
    #26 0x55e291ebabd9 in llvm::LogicalResult llvm::function_ref<llvm::LogicalResult (std::__u::unique_ptr<llvm::MemoryBuffer, std::__u::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&)>::callback_fn<mlir::MlirOptMain(llvm::raw_ostream&, std::__u::unique_ptr<llvm::MemoryBuffer, std::__u::default_delete<llvm::MemoryBuffer>>, mlir::DialectRegistry&, mlir::MlirOptMainConfig const&)::$_0>(long, std::__u::unique_ptr<llvm::MemoryBuffer, std::__u::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&) llvm/include/llvm/ADT/STLFunctionalExtras.h:45:12
    #27 0x55e297b1cffe in operator() llvm/include/llvm/ADT/STLFunctionalExtras.h:68:12
    #28 0x55e297b1cffe in mlir::splitAndProcessBuffer(std::__u::unique_ptr<llvm::MemoryBuffer, std::__u::default_delete<llvm::MemoryBuffer>>, llvm::function_ref<llvm::LogicalResult (std::__u::unique_ptr<llvm::MemoryBuffer, std::__u::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&)>, llvm::raw_ostream&, llvm::StringRef, llvm::StringRef)::$_0::operator()(llvm::StringRef) const mlir/lib/Support/ToolUtilities.cpp:86:16
    #29 0x55e297b1c9c5 in interleave<const llvm::StringRef *, (lambda at mlir/lib/Support/ToolUtilities.cpp:79:23), (lambda at llvm/include/llvm/ADT/STLExtras.h:2147:49), void> llvm/include/llvm/ADT/STLExtras.h:2125:3
    #30 0x55e297b1c9c5 in interleave<llvm::SmallVector<llvm::StringRef, 8U>, (lambda at mlir/lib/Support/ToolUtilities.cpp:79:23), llvm::raw_ostream, llvm::StringRef> llvm/include/llvm/ADT/STLExtras.h:2147:3
    #31 0x55e297b1c9c5 in mlir::splitAndProcessBuffer(std::__u::unique_ptr<llvm::MemoryBuffer, std::__u::default_delete<llvm::MemoryBuffer>>, llvm::function_ref<llvm::LogicalResult (std::__u::unique_ptr<llvm::MemoryBuffer, std::__u::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&)>, llvm::raw_ostream&, llvm::StringRef, llvm::StringRef) mlir/lib/Support/ToolUtilities.cpp:89:3
    #32 0x55e291eb0cf0 in mlir::MlirOptMain(llvm::raw_ostream&, std::__u::unique_ptr<llvm::MemoryBuffer, std::__u::default_delete<llvm::MemoryBuffer>>, mlir::DialectRegistry&, mlir::MlirOptMainConfig const&) mlir/lib/Tools/mlir-opt/MlirOptMain.cpp:551:10
    #33 0x55e291eb115c in mlir::MlirOptMain(int, char**, llvm::StringRef, llvm::StringRef, mlir::DialectRegistry&) mlir/lib/Tools/mlir-opt/MlirOptMain.cpp:589:14
    #34 0x55e291eb15f8 in mlir::MlirOptMain(int, char**, llvm::StringRef, mlir::DialectRegistry&) mlir/lib/Tools/mlir-opt/MlirOptMain.cpp:605:10
    #35 0x55e29130d1be in main mlir/tools/mlir-opt/mlir-opt.cpp:311:33
    #36 0x7fbcf3fff3d3 in __libc_start_main (/usr/grte/v5/lib64/libc.so.6+0x613d3) (BuildId: 9a996398ce14a94560b0c642eb4f6e94)
    #37 0x55e2912365a9 in _start /usr/grte/v5/debug-src/src/csu/../sysdeps/x86_64/start.S:120

0x502000006cd8 is located 8 bytes inside of 16-byte region [0x502000006cd0,0x502000006ce0)
freed by thread T0 here:
    #0 0x55e29130b7e2 in operator delete(void*, unsigned long) compiler-rt/lib/asan/asan_new_delete.cpp:155:3
    #1 0x55e2979eb657 in __libcpp_operator_delete<void *, unsigned long>
    #2 0x55e2979eb657 in __do_deallocate_handle_size<>
    #3 0x55e2979eb657 in __libcpp_deallocate
    #4 0x55e2979eb657 in deallocate
    #5 0x55e2979eb657 in deallocate
    #6 0x55e2979eb657 in operator()
    #7 0x55e2979eb657 in ~vector
    #8 0x55e2979eb657 in mlir::Block::~Block() mlir/lib/IR/Block.cpp:24:1
    #9 0x55e2979ebc17 in deleteNode llvm/include/llvm/ADT/ilist.h:42:39
    #10 0x55e2979ebc17 in erase llvm/include/llvm/ADT/ilist.h:205:5
    #11 0x55e2979ebc17 in erase llvm/include/llvm/ADT/ilist.h:209:39
    #12 0x55e2979ebc17 in mlir::Block::erase() mlir/lib/IR/Block.cpp:67:28
    #13 0x55e297aef978 in mlir::RewriterBase::eraseBlock(mlir::Block*) mlir/lib/IR/PatternMatch.cpp:245:10
    #14 0x55e297af0563 in mlir::RewriterBase::inlineBlockBefore(mlir::Block*, mlir::Block*, llvm::ilist_iterator<llvm::ilist_detail::node_options<mlir::Operation, false, false, void, false, void>, false, false>, mlir::ValueRange) mlir/lib/IR/PatternMatch.cpp:331:3
    #15 0x55e297af06d8 in mlir::RewriterBase::mergeBlocks(mlir::Block*, mlir::Block*, mlir::ValueRange) mlir/lib/IR/PatternMatch.cpp:341:3
    #16 0x55e297036608 in mlir::scf::ForOp::replaceWithAdditionalYields(mlir::RewriterBase&, mlir::ValueRange, bool, std::__u::function<llvm::SmallVector<mlir::Value, 6u> (mlir::OpBuilder&, mlir::Location, llvm::ArrayRef<mlir::BlockArgument>)> const&) mlir/lib/Dialect/SCF/IR/SCF.cpp:575:12
    #17 0x55e2970673ca in mlir::detail::LoopLikeOpInterfaceInterfaceTraits::Model<mlir::scf::ForOp>::replaceWithAdditionalYields(mlir::detail::LoopLikeOpInterfaceInterfaceTraits::Concept const*, mlir::Operation*, mlir::RewriterBase&, mlir::ValueRange, bool, std::__u::function<llvm::SmallVector<mlir::Value, 6u> (mlir::OpBuilder&, mlir::Location, llvm::ArrayRef<mlir::BlockArgument>)> const&) blaze-out/k8-opt-asan/bin/mlir/include/mlir/Interfaces/LoopLikeInterface.h.inc:658:56
    #18 0x55e2978d5feb in replaceWithAdditionalYields blaze-out/k8-opt-asan/bin/mlir/include/mlir/Interfaces/LoopLikeInterface.cpp.inc:105:14
    #19 0x55e2978d5feb in mlir::createFused(mlir::LoopLikeOpInterface, mlir::LoopLikeOpInterface, mlir::RewriterBase&, std::__u::function<llvm::SmallVector<mlir::Value, 6u> (mlir::OpBuilder&, mlir::Location, llvm::ArrayRef<mlir::BlockArgument>)>, llvm::function_ref<void (mlir::RewriterBase&, mlir::LoopLikeOpInterface, mlir::LoopLikeOpInterface&, mlir::IRMapping)>) mlir/lib/Interfaces/LoopLikeInterface.cpp:135:14
    #20 0x55e2952a614b in mlir::fuseIndependentSiblingForLoops(mlir::scf::ForOp, mlir::scf::ForOp, mlir::RewriterBase&) mlir/lib/Dialect/SCF/Utils/Utils.cpp:1398:43
    #21 0x55e291480c6f in mlir::transform::LoopFuseSiblingOp::apply(mlir::transform::TransformRewriter&, mlir::transform::TransformResults&, mlir::transform::TransformState&) mlir/lib/Dialect/SCF/TransformOps/SCFTransformOps.cpp:482:17
    #22 0x55e29149ed5e in mlir::transform::detail::TransformOpInterfaceInterfaceTraits::Model<mlir::transform::LoopFuseSiblingOp>::apply(mlir::transform::detail::TransformOpInterfaceInterfaceTraits::Concept const*, mlir::Operation*, mlir::transform::TransformRewriter&, mlir::transform::TransformResults&, mlir::transform::TransformState&) blaze-out/k8-opt-asan/bin/mlir/include/mlir/Dialect/Transform/Interfaces/TransformInterfaces.h.inc:477:56
    #23 0x55e297494a60 in apply blaze-out/k8-opt-asan/bin/mlir/include/mlir/Dialect/Transform/Interfaces/TransformInterfaces.cpp.inc:61:14
    #24 0x55e297494a60 in mlir::transform::TransformState::applyTransform(mlir::transform::TransformOpInterface) mlir/lib/Dialect/Transform/Interfaces/TransformInterfaces.cpp:953:48
    #25 0x55e294646a8d in applySequenceBlock(mlir::Block&, mlir::transform::FailurePropagationMode, mlir::transform::TransformState&, mlir::transform::TransformResults&) mlir/lib/Dialect/Transform/IR/TransformOps.cpp:1788:15
    #26 0x55e29464f927 in mlir::transform::NamedSequenceOp::apply(mlir::transform::TransformRewriter&, mlir::transform::TransformResults&, mlir::transform::TransformState&) mlir/lib/Dialect/Transform/IR/TransformOps.cpp:2155:10
    #27 0x55e2945d28ee in mlir::transform::detail::TransformOpInterfaceInterfaceTraits::Model<mlir::transform::NamedSequenceOp>::apply(mlir::transform::detail::TransformOpInterfaceInterfaceTraits::Concept const*, mlir::Operation*, mlir::transform::TransformRewriter&, mlir::transform::TransformResults&, mlir::transform::TransformState&) blaze-out/k8-opt-asan/bin/mlir/include/mlir/Dialect/Transform/Interfaces/TransformInterfaces.h.inc:477:56
    #28 0x55e297494a60 in apply blaze-out/k8-opt-asan/bin/mlir/include/mlir/Dialect/Transform/Interfaces/TransformInterfaces.cpp.inc:61:14
    #29 0x55e297494a60 in mlir::transform::TransformState::applyTransform(mlir::transform::TransformOpInterface) mlir/lib/Dialect/Transform/Interfaces/TransformInterfaces.cpp:953:48
    #30 0x55e2974a5fe2 in mlir::transform::applyTransforms(mlir::Operation*, mlir::transform::TransformOpInterface, mlir::RaggedArray<llvm::PointerUnion<mlir::Operation*, mlir::Attribute, mlir::Value>> const&, mlir::transform::TransformOptions const&, bool) mlir/lib/Dialect/Transform/Interfaces/TransformInterfaces.cpp:2016:16
    #31 0x55e2945888d7 in mlir::transform::applyTransformNamedSequence(mlir::RaggedArray<llvm::PointerUnion<mlir::Operation*, mlir::Attribute, mlir::Value>>, mlir::transform::TransformOpInterface, mlir::ModuleOp, mlir::transform::TransformOptions const&) mlir/lib/Dialect/Transform/Transforms/TransformInterpreterUtils.cpp:234:10
    #32 0x55e294582446 in (anonymous namespace)::InterpreterPass::runOnOperation() mlir/lib/Dialect/Transform/Transforms/InterpreterPass.cpp:147:16
    #33 0x55e2978e93c6 in operator() mlir/lib/Pass/Pass.cpp:527:17
    #34 0x55e2978e93c6 in void llvm::function_ref<void ()>::callback_fn<mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int)::$_1>(long) llvm/include/llvm/ADT/STLFunctionalExtras.h:45:12
    #35 0x55e2978e207a in operator() llvm/include/llvm/ADT/STLFunctionalExtras.h:68:12
    #36 0x55e2978e207a in executeAction<mlir::PassExecutionAction, mlir::Pass &> mlir/include/mlir/IR/MLIRContext.h:275:7
    #37 0x55e2978e207a in mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) mlir/lib/Pass/Pass.cpp:521:21
    #38 0x55e2978e5fbf in runPipeline mlir/lib/Pass/Pass.cpp:593:16
    #39 0x55e2978e5fbf in mlir::PassManager::runPasses(mlir::Operation*, mlir::AnalysisManager) mlir/lib/Pass/Pass.cpp:904:10
    #40 0x55e2978e5b65 in mlir::PassManager::run(mlir::Operation*) mlir/lib/Pass/Pass.cpp:884:60
    #41 0x55e291ebb460 in performActions(llvm::raw_ostream&, std::__u::shared_ptr<llvm::SourceMgr> const&, mlir::MLIRContext*, mlir::MlirOptMainConfig const&) mlir/lib/Tools/mlir-opt/MlirOptMain.cpp:408:17
    #42 0x55e291ebabd9 in processBuffer mlir/lib/Tools/mlir-opt/MlirOptMain.cpp:481:9
    #43 0x55e291ebabd9 in operator() mlir/lib/Tools/mlir-opt/MlirOptMain.cpp:548:12
    #44 0x55e291ebabd9 in llvm::LogicalResult llvm::function_ref<llvm::LogicalResult (std::__u::unique_ptr<llvm::MemoryBuffer, std::__u::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&)>::callback_fn<mlir::MlirOptMain(llvm::raw_ostream&, std::__u::unique_ptr<llvm::MemoryBuffer, std::__u::default_delete<llvm::MemoryBuffer>>, mlir::DialectRegistry&, mlir::MlirOptMainConfig const&)::$_0>(long, std::__u::unique_ptr<llvm::MemoryBuffer, std::__u::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&) llvm/include/llvm/ADT/STLFunctionalExtras.h:45:12
    #45 0x55e297b1cffe in operator() llvm/include/llvm/ADT/STLFunctionalExtras.h:68:12
    #46 0x55e297b1cffe in mlir::splitAndProcessBuffer(std::__u::unique_ptr<llvm::MemoryBuffer, std::__u::default_delete<llvm::MemoryBuffer>>, llvm::function_ref<llvm::LogicalResult (std::__u::unique_ptr<llvm::MemoryBuffer, std::__u::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&)>, llvm::raw_ostream&, llvm::StringRef, llvm::StringRef)::$_0::operator()(llvm::StringRef) const mlir/lib/Support/ToolUtilities.cpp:86:16
    #47 0x55e297b1c9c5 in interleave<const llvm::StringRef *, (lambda at mlir/lib/Support/ToolUtilities.cpp:79:23), (lambda at llvm/include/llvm/ADT/STLExtras.h:2147:49), void> llvm/include/llvm/ADT/STLExtras.h:2125:3
    #48 0x55e297b1c9c5 in interleave<llvm::SmallVector<llvm::StringRef, 8U>, (lambda at mlir/lib/Support/ToolUtilities.cpp:79:23), llvm::raw_ostream, llvm::StringRef> llvm/include/llvm/ADT/STLExtras.h:2147:3
    #49 0x55e297b1c9c5 in mlir::splitAndProcessBuffer(std::__u::unique_ptr<llvm::MemoryBuffer, std::__u::default_delete<llvm::MemoryBuffer>>, llvm::function_ref<llvm::LogicalResult (std::__u::unique_ptr<llvm::MemoryBuffer, std::__u::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&)>, llvm::raw_ostream&, llvm::StringRef, llvm::StringRef) mlir/lib/Support/ToolUtilities.cpp:89:3
    #50 0x55e291eb0cf0 in mlir::MlirOptMain(llvm::raw_ostream&, std::__u::unique_ptr<llvm::MemoryBuffer, std::__u::default_delete<llvm::MemoryBuffer>>, mlir::DialectRegistry&, mlir::MlirOptMainConfig const&) mlir/lib/Tools/mlir-opt/MlirOptMain.cpp:551:10
    #51 0x55e291eb115c in mlir::MlirOptMain(int, char**, llvm::StringRef, llvm::StringRef, mlir::DialectRegistry&) mlir/lib/Tools/mlir-opt/MlirOptMain.cpp:589:14

previously allocated by thread T0 here:
    #0 0x55e29130ab5d in operator new(unsigned long) compiler-rt/lib/asan/asan_new_delete.cpp:86:3
    #1 0x55e2979ed5d4 in __libcpp_operator_new<unsigned long>
    #2 0x55e2979ed5d4 in __libcpp_allocate
    #3 0x55e2979ed5d4 in allocate
    #4 0x55e2979ed5d4 in __allocate_at_least<std::__u::allocator<mlir::BlockArgument> >
    #5 0x55e2979ed5d4 in __split_buffer
    #6 0x55e2979ed5d4 in mlir::BlockArgument* std::__u::vector<mlir::BlockArgument, std::__u::allocator<mlir::BlockArgument>>::__push_back_slow_path<mlir::BlockArgument const&>(mlir::BlockArgument const&)
    #7 0x55e2979ec0f2 in push_back
    #8 0x55e2979ec0f2 in mlir::Block::addArgument(mlir::Type, mlir::Location) mlir/lib/IR/Block.cpp:154:13
    #9 0x55e29796e457 in parseRegionBody mlir/lib/AsmParser/Parser.cpp:2172:34
    #10 0x55e29796e457 in (anonymous namespace)::OperationParser::parseRegion(mlir::Region&, llvm::ArrayRef<mlir::OpAsmParser::Argument>, bool) mlir/lib/AsmParser/Parser.cpp:2121:7
    #11 0x55e29796b25e in (anonymous namespace)::CustomOpAsmParser::parseRegion(mlir::Region&, llvm::ArrayRef<mlir::OpAsmParser::Argument>, bool) mlir/lib/AsmParser/Parser.cpp:1785:16
    #12 0x55e297035742 in mlir::scf::ForOp::parse(mlir::OpAsmParser&, mlir::OperationState&) mlir/lib/Dialect/SCF/IR/SCF.cpp:521:14
    #13 0x55e291322c18 in llvm::ParseResult llvm::detail::UniqueFunctionBase<llvm::ParseResult, mlir::OpAsmParser&, mlir::OperationState&>::CallImpl<llvm::ParseResult (*)(mlir::OpAsmParser&, mlir::OperationState&)>(void*, mlir::OpAsmParser&, mlir::OperationState&) llvm/include/llvm/ADT/FunctionExtras.h:220:12
    #14 0x55e29795bea3 in operator() llvm/include/llvm/ADT/FunctionExtras.h:384:12
    #15 0x55e29795bea3 in callback_fn<llvm::unique_function<llvm::ParseResult (mlir::OpAsmParser &, mlir::OperationState &)> > llvm/include/llvm/ADT/STLFunctionalExtras.h:45:12
    #16 0x55e29795bea3 in operator() llvm/include/llvm/ADT/STLFunctionalExtras.h:68:12
    #17 0x55e29795bea3 in parseOperation mlir/lib/AsmParser/Parser.cpp:1521:9
    #18 0x55e29795bea3 in parseCustomOperation mlir/lib/AsmParser/Parser.cpp:2017:19
    #19 0x55e29795bea3 in (anonymous namespace)::OperationParser::parseOperation() mlir/lib/AsmParser/Parser.cpp:1174:10
    #20 0x55e297971d20 in parseBlockBody mlir/lib/AsmParser/Parser.cpp:2296:9
    #21 0x55e297971d20 in (anonymous namespace)::OperationParser::parseBlock(mlir::Block*&) mlir/lib/AsmParser/Parser.cpp:2226:12
    #22 0x55e29796e4f5 in parseRegionBody mlir/lib/AsmParser/Parser.cpp:2184:7
    #23 0x55e29796e4f5 in (anonymous namespace)::OperationParser::parseRegion(mlir::Region&, llvm::ArrayRef<mlir::OpAsmParser::Argument>, bool) mlir/lib/AsmParser/Parser.cpp:2121:7
    #24 0x55e29796b25e in (anonymous namespace)::CustomOpAsmParser::parseRegion(mlir::Region&, llvm::ArrayRef<mlir::OpAsmParser::Argument>, bool) mlir/lib/AsmParser/Parser.cpp:1785:16
    #25 0x55e29796b2cf in (anonymous namespace)::CustomOpAsmParser::parseOptionalRegion(mlir::Region&, llvm::ArrayRef<mlir::OpAsmParser::Argument>, bool) mlir/lib/AsmParser/Parser.cpp:1796:12
    #26 0x55e2978d89ff in mlir::function_interface_impl::parseFunctionOp(mlir::OpAsmParser&, mlir::OperationState&, bool, mlir::StringAttr, llvm::function_ref<mlir::Type (mlir::Builder&, llvm::ArrayRef<mlir::Type>, llvm::ArrayRef<mlir::Type>, mlir::function_interface_impl::VariadicFlag, std::__u::basic_string<char, std::__u::char_traits<char>, std::__u::allocator<char>>&)>, mlir::StringAttr, mlir::StringAttr) mlir/lib/Interfaces/FunctionImplementation.cpp:232:14
    #27 0x55e2969ba41d in mlir::func::FuncOp::parse(mlir::OpAsmParser&, mlir::OperationState&) mlir/lib/Dialect/Func/IR/FuncOps.cpp:203:10
    #28 0x55e291322c18 in llvm::ParseResult llvm::detail::UniqueFunctionBase<llvm::ParseResult, mlir::OpAsmParser&, mlir::OperationState&>::CallImpl<llvm::ParseResult (*)(mlir::OpAsmParser&, mlir::OperationState&)>(void*, mlir::OpAsmParser&, mlir::OperationState&) llvm/include/llvm/ADT/FunctionExtras.h:220:12
    #29 0x55e29795bea3 in operator() llvm/include/llvm/ADT/FunctionExtras.h:384:12
    #30 0x55e29795bea3 in callback_fn<llvm::unique_function<llvm::ParseResult (mlir::OpAsmParser &, mlir::OperationState &)> > llvm/include/llvm/ADT/STLFunctionalExtras.h:45:12
    #31 0x55e29795bea3 in operator() llvm/include/llvm/ADT/STLFunctionalExtras.h:68:12
    #32 0x55e29795bea3 in parseOperation mlir/lib/AsmParser/Parser.cpp:1521:9
    #33 0x55e29795bea3 in parseCustomOperation mlir/lib/AsmParser/Parser.cpp:2017:19
    #34 0x55e29795bea3 in (anonymous namespace)::OperationParser::parseOperation() mlir/lib/AsmParser/Parser.cpp:1174:10
    #35 0x55e297959b78 in parse mlir/lib/AsmParser/Parser.cpp:2725:20
    #36 0x55e297959b78 in mlir::parseAsmSourceFile(llvm::SourceMgr const&, mlir::Block*, mlir::ParserConfig const&, mlir::AsmParserState*, mlir::AsmParserCodeCompleteContext*) mlir/lib/AsmParser/Parser.cpp:2785:41
    #37 0x55e29790d5c2 in mlir::parseSourceFile(std::__u::shared_ptr<llvm::SourceMgr> const&, mlir::Block*, mlir::ParserConfig const&, mlir::LocationAttr*) mlir/lib/Parser/Parser.cpp:46:10
    #38 0x55e291ebbfe2 in parseSourceFile<mlir::ModuleOp, const std::__u::shared_ptr<llvm::SourceMgr> &> mlir/include/mlir/Parser/Parser.h:159:14
    #39 0x55e291ebbfe2 in parseSourceFile<mlir::ModuleOp> mlir/include/mlir/Parser/Parser.h:189:10
    #40 0x55e291ebbfe2 in mlir::parseSourceFileForTool(std::__u::shared_ptr<llvm::SourceMgr> const&, mlir::ParserConfig const&, bool) mlir/include/mlir/Tools/ParseUtilities.h:31:12
    #41 0x55e291ebb263 in performActions(llvm::raw_ostream&, std::__u::shared_ptr<llvm::SourceMgr> const&, mlir::MLIRContext*, mlir::MlirOptMainConfig const&) mlir/lib/Tools/mlir-opt/MlirOptMain.cpp:383:33
    #42 0x55e291ebabd9 in processBuffer mlir/lib/Tools/mlir-opt/MlirOptMain.cpp:481:9
    #43 0x55e291ebabd9 in operator() mlir/lib/Tools/mlir-opt/MlirOptMain.cpp:548:12
    #44 0x55e291ebabd9 in llvm::LogicalResult llvm::function_ref<llvm::LogicalResult (std::__u::unique_ptr<llvm::MemoryBuffer, std::__u::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&)>::callback_fn<mlir::MlirOptMain(llvm::raw_ostream&, std::__u::unique_ptr<llvm::MemoryBuffer, std::__u::default_delete<llvm::MemoryBuffer>>, mlir::DialectRegistry&, mlir::MlirOptMainConfig const&)::$_0>(long, std::__u::unique_ptr<llvm::MemoryBuffer, std::__u::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&) llvm/include/llvm/ADT/STLFunctionalExtras.h:45:12
    #45 0x55e297b1cffe in operator() llvm/include/llvm/ADT/STLFunctionalExtras.h:68:12
    #46 0x55e297b1cffe in mlir::splitAndProcessBuffer(std::__u::unique_ptr<llvm::MemoryBuffer, std::__u::default_delete<llvm::MemoryBuffer>>, llvm::function_ref<llvm::LogicalResult (std::__u::unique_ptr<llvm::MemoryBuffer, std::__u::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&)>, llvm::raw_ostream&, llvm::StringRef, llvm::StringRef)::$_0::operator()(llvm::StringRef) const mlir/lib/Support/ToolUtilities.cpp:86:16
    #47 0x55e297b1c9c5 in interleave<const llvm::StringRef *, (lambda at mlir/lib/Support/ToolUtilities.cpp:79:23), (lambda at llvm/include/llvm/ADT/STLExtras.h:2147:49), void> llvm/include/llvm/ADT/STLExtras.h:2125:3
    #48 0x55e297b1c9c5 in interleave<llvm::SmallVector<llvm::StringRef, 8U>, (lambda at mlir/lib/Support/ToolUtilities.cpp:79:23), llvm::raw_ostream, llvm::StringRef> llvm/include/llvm/ADT/STLExtras.h:2147:3
    #49 0x55e297b1c9c5 in mlir::splitAndProcessBuffer(std::__u::unique_ptr<llvm::MemoryBuffer, std::__u::default_delete<llvm::MemoryBuffer>>, llvm::function_ref<llvm::LogicalResult (std::__u::unique_ptr<llvm::MemoryBuffer, std::__u::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&)>, llvm::raw_ostream&, llvm::StringRef, llvm::StringRef) mlir/lib/Support/ToolUtilities.cpp:89:3
    #50 0x55e291eb0cf0 in mlir::MlirOptMain(llvm::raw_ostream&, std::__u::unique_ptr<llvm::MemoryBuffer, std::__u::default_delete<llvm::MemoryBuffer>>, mlir::DialectRegistry&, mlir::MlirOptMainConfig const&) mlir/lib/Tools/mlir-opt/MlirOptMain.cpp:551:10
    #51 0x55e291eb115c in mlir::MlirOptMain(int, char**, llvm::StringRef, llvm::StringRef, mlir::DialectRegistry&) mlir/lib/Tools/mlir-opt/MlirOptMain.cpp:589:14
    #52 0x55e291eb15f8 in mlir::MlirOptMain(int, char**, llvm::StringRef, mlir::DialectRegistry&) mlir/lib/Tools/mlir-opt/MlirOptMain.cpp:605:10
    #53 0x55e29130d1be in main mlir/tools/mlir-opt/mlir-opt.cpp:311:33
    #54 0x7fbcf3fff3d3 in __libc_start_main (/usr/grte/v5/lib64/libc.so.6+0x613d3) (BuildId: 9a996398ce14a94560b0c642eb4f6e94)
    #55 0x55e2912365a9 in _start /usr/grte/v5/debug-src/src/csu/../sysdeps/x86_64/start.S:120

SUMMARY: AddressSanitizer: heap-use-after-free mlir/include/mlir/IR/IRMapping.h:40:11 in map<llvm::MutableArrayRef<mlir::BlockArgument> &, llvm::MutableArrayRef<mlir::BlockArgument>, nullptr>
Shadow bytes around the buggy address:
  0x502000006a00: fa fa 00 fa fa fa 00 00 fa fa 00 fa fa fa 00 fa
  0x502000006a80: fa fa 00 fa fa fa 00 00 fa fa 00 00 fa fa 00 00
  0x502000006b00: fa fa 00 00 fa fa 00 00 fa fa 00 fa fa fa 00 fa
  0x502000006b80: fa fa 00 fa fa fa 00 fa fa fa 00 00 fa fa 00 00
  0x502000006c00: fa fa 00 00 fa fa 00 00 fa fa 00 00 fa fa fd fa
=>0x502000006c80: fa fa fd fa fa fa fd fd fa fa fd[fd]fa fa fd fd
  0x502000006d00: fa fa 00 fa fa fa 00 fa fa fa 00 fa fa fa 00 fa
  0x502000006d80: fa fa 00 fa fa fa 00 fa fa fa 00 fa fa fa 00 fa
  0x502000006e00: fa fa 00 fa fa fa 00 fa fa fa 00 00 fa fa 00 fa
  0x502000006e80: fa fa 00 fa fa fa 00 00 fa fa 00 fa fa fa 00 fa
  0x502000006f00: fa fa 00 fa fa fa 00 fa fa fa 00 fa fa fa 00 fa
Shadow byte legend (one shadow byte represents 8 application bytes):
  Addressable:           00
  Partially addressable: 01 02 03 04 05 06 07
  Heap left redzone:       fa
  Freed heap region:       fd
  Stack left redzone:      f1
  Stack mid redzone:       f2
  Stack right redzone:     f3
  Stack after return:      f5
  Stack use after scope:   f8
  Global redzone:          f9
  Global init order:       f6
  Poisoned by user:        f7
  Container overflow:      fc
  Array cookie:            ac
  Intra object redzone:    bb
  ASan internal:           fe
  Left alloca redzone:     ca
  Right alloca redzone:    cb
==4320==ABORTING


  Commit: ebab105670a409e426ddcb0278578711a622b1b2
      https://github.com/llvm/llvm-project/commit/ebab105670a409e426ddcb0278578711a622b1b2
  Author: Nikita Popov <npopov at redhat.com>
  Date:   2024-07-04 (Thu, 04 Jul 2024)

  Changed paths:
    M llvm/lib/Analysis/ValueTracking.cpp
    M llvm/lib/IR/Value.cpp
    A llvm/test/Analysis/BasicAA/ptr-vector.ll

  Log Message:
  -----------
  [IR] Don't strip through pointer to vector of pointer bitcasts

When using stripPointerCasts() and getUnderlyingObject(), don't
strip through a bitcast from ptr to <1 x ptr>, which is not a
no-op pointer cast. Calling code is generally not prepared to
handle that situation, resulting in incorrect alias analysis
results for example.

Fixes https://github.com/llvm/llvm-project/issues/97600.


  Commit: 927def49728371d746476e79a6570cd93a4d335c
      https://github.com/llvm/llvm-project/commit/927def49728371d746476e79a6570cd93a4d335c
  Author: David Spickett <david.spickett at linaro.org>
  Date:   2024-07-04 (Thu, 04 Jul 2024)

  Changed paths:
    M lldb/source/Plugins/TypeSystem/Clang/TypeSystemClang.cpp
    M lldb/test/Shell/SymbolFile/DWARF/x86/debug-types-missing-signature.test
    M lldb/unittests/ValueObject/DumpValueObjectOptionsTests.cpp

  Log Message:
  -----------
  Revert "[lldb] Print empty enums as if they were unrecognised normal enums (#97553)"

This reverts commit 41fddc4ec3302f125a5b84ae86c8027dedc89984.

Due to build errors with gcc passing signed ints to unsigned ints.


  Commit: 67b302c52f79db2ab5c46e5e8c600f1c2af57a83
      https://github.com/llvm/llvm-project/commit/67b302c52f79db2ab5c46e5e8c600f1c2af57a83
  Author: Cullen Rhodes <cullen.rhodes at arm.com>
  Date:   2024-07-04 (Thu, 04 Jul 2024)

  Changed paths:
    M mlir/include/mlir/Dialect/Vector/IR/VectorOps.td
    M mlir/lib/Conversion/VectorToLLVM/ConvertVectorToLLVM.cpp
    M mlir/lib/Dialect/Vector/IR/VectorOps.cpp
    M mlir/test/Conversion/VectorToLLVM/vector-to-llvm.mlir
    M mlir/test/Dialect/Vector/canonicalize.mlir
    M mlir/test/Dialect/Vector/invalid.mlir
    M mlir/test/Dialect/Vector/ops.mlir

  Log Message:
  -----------
  [mlir][vector] Add vector.step operation (#96776)

This patch adds a new vector.step operation to the Vector dialect. It
produces a linear sequence of index values from 0 to N, where N is the
number of elements in the result vector, and can be used to create
vectors of indices.

It supports both fixed-width and scalable vectors. For fixed the
canonical representation is `arith.constant dense<[0, .., N]>`. A
scalable step cannot be represented as a constant and is lowered to the
`llvm.experimental.stepvector` intrinsic [1].

This op enables scalable vectorization of linalg.index ops, see #96778. It can
also be used in the SparseVectorizer in-place of lower-level stepvector
intrinsic, see [2] (patch to follow).

[1] https://llvm.org/docs/LangRef.html#llvm-experimental-stepvector-intrinsic
[2] https://github.com/llvm/llvm-project/blob/acf675b63f9426e61aac2155e29280f7d21f9421/mlir/lib/Dialect/SparseTensor/Transforms/SparseVectorization.cpp#L385-L388


  Commit: 7b34cad1b8505dd1d5593ab8fd196398bf605ac5
      https://github.com/llvm/llvm-project/commit/7b34cad1b8505dd1d5593ab8fd196398bf605ac5
  Author: Tianyi Guan <tguan at nvidia.com>
  Date:   2024-07-04 (Thu, 04 Jul 2024)

  Changed paths:
    A llvm/test/CodeGen/AArch64/itofp-bf16.ll
    M llvm/test/CodeGen/AArch64/itofp.ll

  Log Message:
  -----------
  [AArch64] Extract bf16 cases from `itofp.ll` to `itofp-bf16.ll`, NFC.


  Commit: 54de090340acff98bd1c1163f5eaf0bcbfe247e1
      https://github.com/llvm/llvm-project/commit/54de090340acff98bd1c1163f5eaf0bcbfe247e1
  Author: Tianyi Guan <tguan at nvidia.com>
  Date:   2024-07-04 (Thu, 04 Jul 2024)

  Changed paths:
    M llvm/test/CodeGen/AArch64/itofp.ll

  Log Message:
  -----------
  [AArch64] Add i128 and fp128 tests to `itofp.ll`. NFC


  Commit: 173514d58ec4e6166670f1e37a038df3865c8b96
      https://github.com/llvm/llvm-project/commit/173514d58ec4e6166670f1e37a038df3865c8b96
  Author: Tianyi Guan <tguan at nvidia.com>
  Date:   2024-07-04 (Thu, 04 Jul 2024)

  Changed paths:
    M llvm/test/CodeGen/AArch64/fcmp.ll

  Log Message:
  -----------
  [AArch64] Add fp128 tests in `fcmp.ll`. NFC


  Commit: 328d9f62976defb96cba8102ea54f44cf88c8032
      https://github.com/llvm/llvm-project/commit/328d9f62976defb96cba8102ea54f44cf88c8032
  Author: David Spickett <david.spickett at linaro.org>
  Date:   2024-07-04 (Thu, 04 Jul 2024)

  Changed paths:
    M lldb/source/Plugins/TypeSystem/Clang/TypeSystemClang.cpp
    M lldb/test/Shell/SymbolFile/DWARF/x86/debug-types-missing-signature.test
    M lldb/unittests/ValueObject/DumpValueObjectOptionsTests.cpp

  Log Message:
  -----------
  Reland "[lldb] Print empty enums as if they were unrecognised normal enums (#97553)"

This reverts commit 927def49728371d746476e79a6570cd93a4d335c.

I've refactored the tests so that we're explicit about whether the
enum is signed or not. Which means we use the proper types
throughout.


  Commit: 4002e380d0f7c689df7d26d9637118c2c7c6f985
      https://github.com/llvm/llvm-project/commit/4002e380d0f7c689df7d26d9637118c2c7c6f985
  Author: Luke Lau <luke at igalia.com>
  Date:   2024-07-04 (Thu, 04 Jul 2024)

  Changed paths:
    M llvm/test/CodeGen/RISCV/rvv/fixed-vectors-strided-load-store-asm.ll
    M llvm/test/CodeGen/RISCV/rvv/fixed-vectors-strided-load-store.ll

  Log Message:
  -----------
  [RISCV] Use splat shorthand in strided load store tests. NFC


  Commit: 28be3f8ac51e62610f8e78b411adf05a2365dff7
      https://github.com/llvm/llvm-project/commit/28be3f8ac51e62610f8e78b411adf05a2365dff7
  Author: Florian Hahn <flo at fhahn.com>
  Date:   2024-07-04 (Thu, 04 Jul 2024)

  Changed paths:
    M llvm/include/llvm/Analysis/LoopAccessAnalysis.h
    M llvm/lib/Analysis/LoopAccessAnalysis.cpp

  Log Message:
  -----------
  [LAA] Cache pointer bounds expansions (NFCI).

This avoids expanding the same bounds multiple times, which helps reduce
the compile-time impact of removing the restrictions added in
234cc40adc6, notably -0.06% on stage1-O3 and -0.05% on both
stage1-ReleaseThinLTO and stage1-ReleaseLTO-g.

https://llvm-compile-time-tracker.com/compare.php?from=8b9ebc4bb86cf0979e05908cbb04336f2d01dda5&to=fabd36f96c31e47ea72653f5a404feaadfc7b5b5&stat=instructions:u


  Commit: f99746f30a125324500cc7a46829fcfd44bed3dc
      https://github.com/llvm/llvm-project/commit/f99746f30a125324500cc7a46829fcfd44bed3dc
  Author: Nikita Popov <npopov at redhat.com>
  Date:   2024-07-04 (Thu, 04 Jul 2024)

  Changed paths:
    M llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyld.cpp

  Log Message:
  -----------
  [Orc][RuntimeDyld] Return after handling error (#95364)

If OnLoaded failed, return after passing the error to OnEmitted instead
of also calling finalizeAsync (which would use values that have already
been moved and perform another call to OnEmitted).


  Commit: 94b2b1d74a4488e61d7992b12d1042ae6a99f3d5
      https://github.com/llvm/llvm-project/commit/94b2b1d74a4488e61d7992b12d1042ae6a99f3d5
  Author: Simon Pilgrim <llvm-dev at redking.me.uk>
  Date:   2024-07-04 (Thu, 04 Jul 2024)

  Changed paths:
    M llvm/lib/SandboxIR/SandboxIR.cpp

  Log Message:
  -----------
  Fix MSVC "not all control paths return a value" warning. NFC


  Commit: 81660bbc1c066646ef3c232f5af097092e76f8b7
      https://github.com/llvm/llvm-project/commit/81660bbc1c066646ef3c232f5af097092e76f8b7
  Author: Tomas Matheson <Tomas.Matheson at arm.com>
  Date:   2024-07-04 (Thu, 04 Jul 2024)

  Changed paths:
    M llvm/unittests/TargetParser/TargetParserTest.cpp
    M llvm/utils/TableGen/ARMTargetDefEmitter.cpp

  Log Message:
  -----------
  [AArch64] remove pointless AEK_NONE (#97569)


  Commit: 2c0add93b2df27b34c819c11474d8ba7b8e52e70
      https://github.com/llvm/llvm-project/commit/2c0add93b2df27b34c819c11474d8ba7b8e52e70
  Author: Graham Hunter <graham.hunter at arm.com>
  Date:   2024-07-04 (Thu, 04 Jul 2024)

  Changed paths:
    M llvm/include/llvm/Analysis/TargetTransformInfoImpl.h
    M llvm/lib/Target/AArch64/AArch64TargetTransformInfo.cpp
    M llvm/test/Analysis/CostModel/AArch64/sve-intrinsics.ll

  Log Message:
  -----------
  [TTI] Return a more sensible cost for histogram intrinsic. (#97397)

This is just an initial cost, making it invalid for any target which
doesn't specifically return a cost for now. Also adds an AArch64
specific cost check.

We will need to improve that later, e.g. by returning a scalarization
cost for generic targets and possibly introducing a new TTI method, at
least once LoopVectorize has changed it's cost model. The reason is
that the histogram intrinsic also effectively contains a gather and
scatter, and we will need details of the addressing to determine an
appropriate cost for that.


  Commit: e6cf292003fa53214a8abf2b4150e58296f76483
      https://github.com/llvm/llvm-project/commit/e6cf292003fa53214a8abf2b4150e58296f76483
  Author: Simon Pilgrim <llvm-dev at redking.me.uk>
  Date:   2024-07-04 (Thu, 04 Jul 2024)

  Changed paths:
    M llvm/test/Transforms/InstCombine/X86/x86-pmulh.ll
    M llvm/test/Transforms/InstCombine/X86/x86-pmulhu.ll

  Log Message:
  -----------
  [InstCombine][X86] Add some basic knownbits tests for PMULH/PMULHU

Recognise known zero upperbits


  Commit: 5c204b1d2619cbad7b7ad228b62feae08781a6db
      https://github.com/llvm/llvm-project/commit/5c204b1d2619cbad7b7ad228b62feae08781a6db
  Author: Simon Pilgrim <llvm-dev at redking.me.uk>
  Date:   2024-07-04 (Thu, 04 Jul 2024)

  Changed paths:
    M llvm/lib/Analysis/ValueTracking.cpp
    M llvm/test/Transforms/InstCombine/X86/x86-pmulh.ll
    M llvm/test/Transforms/InstCombine/X86/x86-pmulhu.ll

  Log Message:
  -----------
  [ValueTracking][X86] computeKnownBitsFromOperator - add PMULH/PMULHU intrinsics mulhs/mulhu known bits handling.

These map directly to the KnownBits implementations.


  Commit: 2b3b405b09a0d965a4aff1f92958418ddbf1e7f6
      https://github.com/llvm/llvm-project/commit/2b3b405b09a0d965a4aff1f92958418ddbf1e7f6
  Author: Florian Hahn <flo at fhahn.com>
  Date:   2024-07-04 (Thu, 04 Jul 2024)

  Changed paths:
    M llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
    A llvm/test/Transforms/LoopVectorize/RISCV/first-order-recurrence-scalable-vf1.ll
    A llvm/test/Transforms/LoopVectorize/first-order-recurrence-scalable-vf1.ll

  Log Message:
  -----------
  [LV] Don't vectorize first-order recurrence with VF <vscale x 1 x ..>

The assertion added as part of https://github.com/llvm/llvm-project/pull/93395
surfaced cases where first-order recurrences are vectorized with
<vscale x 1 x ..>. If vscale is 1, then we are unable to extract the
penultimate value (second to last lane). Previously this case got
mis-compiled, trying to extract from an invalid lane (-1)
https://llvm.godbolt.org/z/3adzYYcf9.

Fixes https://github.com/llvm/llvm-project/issues/97452.


  Commit: e7bfd4d77fafdcad890f80f8feee50ca02e0e2c3
      https://github.com/llvm/llvm-project/commit/e7bfd4d77fafdcad890f80f8feee50ca02e0e2c3
  Author: Nikita Popov <npopov at redhat.com>
  Date:   2024-07-04 (Thu, 04 Jul 2024)

  Changed paths:
    A llvm/test/Transforms/Mem2Reg/single-store.ll

  Log Message:
  -----------
  [Mem2Reg] Add some single store tests (NFC)

For https://github.com/llvm/llvm-project/issues/97702.


  Commit: 07b3e2c0c68b93a3d4d89426dc7fd14cc31ca6be
      https://github.com/llvm/llvm-project/commit/07b3e2c0c68b93a3d4d89426dc7fd14cc31ca6be
  Author: Muhammad Omair Javaid <omair.javaid at linaro.org>
  Date:   2024-07-04 (Thu, 04 Jul 2024)

  Changed paths:
    M lldb/test/API/python_api/thread/TestThreadAPI.py

  Log Message:
  -----------
  [LLDB] XFail on Windows TestThreadAPI.py test_StepInstruction

TestThreadAPI.py test_StepInstruction started failing after #97493

Following assertion fails but I am not sure if test will pass after
changing the test.

AssertionError: 'void __cdecl call_me(bool)' != 'call_me(bool)'

I have marked it as xfail I ll run it on a Windows machine to find
an appropriate fix.

https://lab.llvm.org/buildbot/#/builders/141/builds/476


  Commit: d6af73e9fbc84315100499a096f17ec5eeeeea23
      https://github.com/llvm/llvm-project/commit/d6af73e9fbc84315100499a096f17ec5eeeeea23
  Author: David Spickett <david.spickett at linaro.org>
  Date:   2024-07-04 (Thu, 04 Jul 2024)

  Changed paths:
    M compiler-rt/test/fuzzer/fuzzer-leak.test

  Log Message:
  -----------
  [compiler-rt][Fuzzer] Disable fuzzer-leak test

This has been flaky and reporting a lot of unrelated failures to PRs.

See https://github.com/llvm/llvm-project/issues/97712


  Commit: 483557224b8d36761f39d5847e17ef7361757f1b
      https://github.com/llvm/llvm-project/commit/483557224b8d36761f39d5847e17ef7361757f1b
  Author: Kristóf Umann <dkszelethus at gmail.com>
  Date:   2024-07-04 (Thu, 04 Jul 2024)

  Changed paths:
    M clang/include/clang/StaticAnalyzer/Core/PathSensitive/MemRegion.h
    M clang/lib/StaticAnalyzer/Checkers/CStringChecker.cpp
    M clang/lib/StaticAnalyzer/Core/MemRegion.cpp
    M clang/test/Analysis/bstring_UninitRead.c

  Log Message:
  -----------
  [analyzer] Check the correct first and last elements in cstring.UninitializedRead (#95408)

I intend to fix this checker up so that we can move it out of alpha. I
made a bunch of analyses, and found many similar false positives:

```c++
int t[] = {1,2,3};
memcpy(dst, t, sizeof(t) / sizeof(t[0])); // warn
```

The problem here is the way CStringChecker checks whether the
destination and source buffers are initialized: heuristically, it only
checks the first and last element. This is fine, however, it retrieves
these elements as characters, even if the underlaying object is not a
character array. Reading the last byte of an integer is undefined, so
the checker emits a bug here.

A quick search tells you the rationale: "Both objects are reinterpreted
as arrays of unsigned char.". But the static analyzer right now can't
check byte-by-byte if a memory region is _initialized_, it can only
check if its a well-defined character or not.

In this patch, I pry the original array out of the arguments to memcpy
(and similar functions), and retrieve the actual first and last elements
according to the array's actual element type.

Currently, my improvements reduced the number of reports to 29 on these
projects: memcached,tmux,curl,twin,vim,openssl,sqlite,ffmpeg,postgres


https://codechecker-demo.eastus.cloudapp.azure.com/Default/reports?detection-status=New&detection-status=Reopened&detection-status=Unresolved&is-unique=on&run=%2acstring_uninit_upper_bound_patched&newcheck=%2acstring_uninit_upper_bounds_patched&diff-type=New&checker-name=alpha.unix.cstring.UninitializedRead&items-per-page=100

Before my patch, there were 87.


https://codechecker-demo.eastus.cloudapp.azure.com/Default/reports?detection-status=New&detection-status=Reopened&detection-status=Unresolved&is-unique=on&run=%2acstring_uninit_baseline&newcheck=%2acstring_uninit_upper_bounds_patched&diff-type=New&checker-name=alpha.unix.cstring.UninitializedRead&items-per-page=100


  Commit: 7fb71d15cd3c2a185d4a60791e893d3c5721754d
      https://github.com/llvm/llvm-project/commit/7fb71d15cd3c2a185d4a60791e893d3c5721754d
  Author: Ilya Leoshkevich <iii at linux.ibm.com>
  Date:   2024-07-04 (Thu, 04 Jul 2024)

  Changed paths:
    M llvm/cmake/config.guess

  Log Message:
  -----------
  [SystemZ] Fix handling of target triples on Debian (#95407) (#97546)

Debian's GCC installation has target triple "s390x-linux-gnu". Since,
unlike in Ubuntu, there is no /etc/lsb-release, config.guess detects
"s390x-ibm-linux". Generic_GCC::GCCInstallationDetector::init() only
tries to strip the "unknown" vendor, so GCC installation detection
fails.

Checking /etc/os-release in addition to /etc/lsb-release fixes this
problem. However, LLVM-built sanitizer runtimes still cannot be found:
the driver looks for them in lib/clang/19/lib/s390x-linux-gnu, but the
build system places them in lib/clang/19/lib/s390x-unknown-linux-gnu.

According to @MaskRay, the build system is doing the right thing [1]: on
the file system, full arch-vendor-os-environment triples must be used.
In order to satisfy both GCCInstallationDetector and this rule, use the
"s390x-unknown-linux-gnu" triple.

[1]
https://github.com/llvm/llvm-project/issues/95407#issuecomment-2167390240


  Commit: 42b193c962bd04b840b121e5fd27131038404925
      https://github.com/llvm/llvm-project/commit/42b193c962bd04b840b121e5fd27131038404925
  Author: Phoebe Wang <phoebe.wang at intel.com>
  Date:   2024-07-04 (Thu, 04 Jul 2024)

  Changed paths:
    M llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp
    A llvm/test/MC/X86/AMX/amx-error.s

  Log Message:
  -----------
  [AMX] Error out when AMX DP instructions use same registers (#97686)

Fixes #97522


  Commit: 99f6ff9c0b5f2c009878c2ad5607bc7a3086956b
      https://github.com/llvm/llvm-project/commit/99f6ff9c0b5f2c009878c2ad5607bc7a3086956b
  Author: Sergio Afonso <safonsof at amd.com>
  Date:   2024-07-04 (Thu, 04 Jul 2024)

  Changed paths:
    M flang/lib/Lower/OpenMP/DataSharingProcessor.cpp

  Log Message:
  -----------
  [Flang][OpenMP] Use InsertionGuard in DataSharingProcessor (#97562)

This patch removes the introduction of `fir.undef` operations as a way
to keep track of insertion points inside of the `DataSharingProcessor`,
and it replaces them with an `InsertionGuard` to avoid creating such
operations inside of loop wrappers.

Leaving any `fir.undef` operation inside of a loop wrapper would result
in a verifier error, since they enforce strict requirements on the
contents of their code regions.


  Commit: 6222c8f0305de1fdc5ff39f5f1d87fcfeebfa646
      https://github.com/llvm/llvm-project/commit/6222c8f0305de1fdc5ff39f5f1d87fcfeebfa646
  Author: Nicholas Guy <67685292+NickGuy-Arm at users.noreply.github.com>
  Date:   2024-07-04 (Thu, 04 Jul 2024)

  Changed paths:
    M llvm/docs/LangRef.rst
    M llvm/include/llvm/IR/Intrinsics.td
    M llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
    M llvm/lib/IR/Verifier.cpp
    A llvm/test/CodeGen/AArch64/partial-reduction-add.ll

  Log Message:
  -----------
  [IR][LangRef] Add partial reduction add intrinsic (#94499)

Adds the llvm.experimental.partial.reduce.add.* overloaded intrinsic,
this intrinsic represents add reductions that result in a narrower
vector.


  Commit: f58930f705884dfac3bd8c481c827d027a6068cb
      https://github.com/llvm/llvm-project/commit/f58930f705884dfac3bd8c481c827d027a6068cb
  Author: Nikita Popov <npopov at redhat.com>
  Date:   2024-07-04 (Thu, 04 Jul 2024)

  Changed paths:
    M llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
    M llvm/test/Transforms/Mem2Reg/single-store.ll

  Log Message:
  -----------
  [Mem2Reg] Don't use single store optimization for potentially poison value (#97711)

If there is a single store, then loads must either load the stored value
or uninitialized memory (undef). If the stored value may be poison, then
replacing an uninitialized memory load with it would be incorrect. Fall
back to the generic code in that case.

This PR only fixes the case where there is a literal poison store -- the
case where the value is non-trivially poison will still get miscompiled
by phi simplification later, see #96631.

Fixes https://github.com/llvm/llvm-project/issues/97702.


  Commit: bbc6504b3d2f237ed7e84dcaecb228bf2124f72e
      https://github.com/llvm/llvm-project/commit/bbc6504b3d2f237ed7e84dcaecb228bf2124f72e
  Author: Ariel-Burton <arielburton at yahoo.com>
  Date:   2024-07-04 (Thu, 04 Jul 2024)

  Changed paths:
    M llvm/lib/Support/APFloat.cpp

  Log Message:
  -----------
  [NFC] [APFloat] Refactor IEEEFloat::toString (#97117)

This PR lifts the body of IEEEFloat::toString out to a standalone
function. We do this to facilitate code sharing with other floating
point types, e.g., the forthcoming support for HexFloat.

There is no change in functionality.


  Commit: 3cab132e94d3c63dbcf20d2acc4879b2b98a0de9
      https://github.com/llvm/llvm-project/commit/3cab132e94d3c63dbcf20d2acc4879b2b98a0de9
  Author: Endre Fülöp <endre.fulop at sigmatechnology.com>
  Date:   2024-07-04 (Thu, 04 Jul 2024)

  Changed paths:
    M clang/www/analyzer/alpha_checks.html
    M clang/www/analyzer/available_checks.html

  Log Message:
  -----------
  [clang][analyzer][doc] Migrate checkers-related docs from HTML to RST (#97032)

Documentation for the checkers is kept up to date in RST files.
This patch removes duplication by replacing the HTML docs with links to
docs generated from the RST.


  Commit: 218f71d43283c2916aac6923edf4df6c0024676a
      https://github.com/llvm/llvm-project/commit/218f71d43283c2916aac6923edf4df6c0024676a
  Author: Shan Huang <52285902006 at stu.ecnu.edu.cn>
  Date:   2024-07-04 (Thu, 04 Jul 2024)

  Changed paths:
    M llvm/lib/Transforms/Scalar/LowerConstantIntrinsics.cpp
    A llvm/test/Transforms/LowerConstantIntrinsics/preserving-debugloc-br.ll

  Log Message:
  -----------
  [DebugInfo][LowerConstantIntrinsics] Fix the missing debug location of new branch instruction (#97145)

Fix #97142 .


  Commit: e0f4d27a50c6b524d6cf24c347038a18112ce517
      https://github.com/llvm/llvm-project/commit/e0f4d27a50c6b524d6cf24c347038a18112ce517
  Author: Shan Huang <52285902006 at stu.ecnu.edu.cn>
  Date:   2024-07-04 (Thu, 04 Jul 2024)

  Changed paths:
    M llvm/lib/Transforms/Scalar/LoopFlatten.cpp
    A llvm/test/Transforms/LoopFlatten/preserving_debugloc_br.ll

  Log Message:
  -----------
  [DebugInfo][LoopFlatten] Fix missing debug location update for new br instruction (#97085)

Fix #97084 .


  Commit: 2532ebb341d9c60692688fdd5b94cf61693e1e63
      https://github.com/llvm/llvm-project/commit/2532ebb341d9c60692688fdd5b94cf61693e1e63
  Author: Simon Pilgrim <llvm-dev at redking.me.uk>
  Date:   2024-07-04 (Thu, 04 Jul 2024)

  Changed paths:
    M llvm/test/CodeGen/X86/vselect-avx.ll

  Log Message:
  -----------
  [X86] Add test showing failure to concat VBLENDVB nodes back together through bitcasts


  Commit: d43ec97de081755990264049eba09cb7c83cb321
      https://github.com/llvm/llvm-project/commit/d43ec97de081755990264049eba09cb7c83cb321
  Author: Simon Pilgrim <llvm-dev at redking.me.uk>
  Date:   2024-07-04 (Thu, 04 Jul 2024)

  Changed paths:
    M llvm/lib/Target/X86/X86ISelLowering.cpp
    M llvm/test/CodeGen/X86/vselect-avx.ll

  Log Message:
  -----------
  [X86] combineConcatVectorOps - IsConcatFree - peek through bitcasts to find inplace subvectors.

The EXTRACT_SUBVECTOR nodes don't have to be the same type, they just need to be at the correct bit offsets when concatenated back together.


  Commit: f329e3ed9070aee3f4c0ebc80ed62f5c4b645d73
      https://github.com/llvm/llvm-project/commit/f329e3ed9070aee3f4c0ebc80ed62f5c4b645d73
  Author: Discookie <viktor.cseh at ericsson.com>
  Date:   2024-07-04 (Thu, 04 Jul 2024)

  Changed paths:
    M clang-tools-extra/clang-tidy/bugprone/BugproneTidyModule.cpp
    M clang-tools-extra/clang-tidy/bugprone/CMakeLists.txt
    A clang-tools-extra/clang-tidy/bugprone/PointerArithmeticOnPolymorphicObjectCheck.cpp
    A clang-tools-extra/clang-tidy/bugprone/PointerArithmeticOnPolymorphicObjectCheck.h
    M clang-tools-extra/clang-tidy/cert/CERTTidyModule.cpp
    M clang-tools-extra/docs/ReleaseNotes.rst
    A clang-tools-extra/docs/clang-tidy/checks/bugprone/pointer-arithmetic-on-polymorphic-object.rst
    A clang-tools-extra/docs/clang-tidy/checks/cert/ctr56-cpp.rst
    M clang-tools-extra/docs/clang-tidy/checks/list.rst
    A clang-tools-extra/test/clang-tidy/checkers/bugprone/pointer-arithmetic-on-polymorphic-object-all.cpp
    A clang-tools-extra/test/clang-tidy/checkers/bugprone/pointer-arithmetic-on-polymorphic-object-decl-only.cpp

  Log Message:
  -----------
  [clang-tidy] Add `bugprone-pointer-arithmetic-on-polymorphic-object` check (#91951)

Finds pointer arithmetic on classes that declare a virtual function.

This check corresponds to the SEI Cert rule [CTR56-CPP: Do not use
pointer arithmetic on polymorphic
objects](https://wiki.sei.cmu.edu/confluence/display/cplusplus/CTR56-CPP.+Do+not+use+pointer+arithmetic+on+polymorphic+objects).

```cpp
struct Base {
  virtual void ~Base();
};

struct Derived : public Base {};

void foo(Base *b) {
  b += 1; // passing `Derived` to `foo()` results in UB
}
```

[Results on open-source
projects](https://codechecker-demo.eastus.cloudapp.azure.com/Default/runs?run=Discookie-ctr56-with-classnames).
Most of the Qtbase reports are from having a `virtual override`
declaration, and the LLVM reports are true positives, as far as I can
tell.


  Commit: 0035c2efad8fd7b4dbd01efbc573999f7b91b0d5
      https://github.com/llvm/llvm-project/commit/0035c2efad8fd7b4dbd01efbc573999f7b91b0d5
  Author: LLVM GN Syncbot <llvmgnsyncbot at gmail.com>
  Date:   2024-07-04 (Thu, 04 Jul 2024)

  Changed paths:
    M llvm/utils/gn/secondary/clang-tools-extra/clang-tidy/bugprone/BUILD.gn

  Log Message:
  -----------
  [gn build] Port f329e3ed9070


  Commit: b12449fb289708f3d31c107d6e7977044a01da62
      https://github.com/llvm/llvm-project/commit/b12449fb289708f3d31c107d6e7977044a01da62
  Author: Anatoly Trosinenko <atrosinenko at accesssoftek.com>
  Date:   2024-07-04 (Thu, 04 Jul 2024)

  Changed paths:
    M llvm/include/llvm/CodeGen/IndirectThunks.h
    M llvm/lib/Target/AArch64/AArch64SLSHardening.cpp
    M llvm/lib/Target/ARM/ARMSLSHardening.cpp
    M llvm/lib/Target/X86/X86IndirectThunks.cpp

  Log Message:
  -----------
  [CodeGen] Refactor and document ThunkInserter (#97468)

In preparation for supporting BLRA* instructions in SLS Hardening on
AArch64, refactor ThunkInserter class.

The main intention of this commit is to document the way to merge the
BLR-rewriting logic of the AArch64SLSHardening pass into the
SLSBLRThunkInserter class. This makes it possible to only call
createThunkFunction for the thunks that are actually referenced.
Ultimately, it will prevent SLSBLRThunkInserter from unconditionally
generating about 1800 thunk functions corresponding to every possible
combination of operands passed to BLRAA or BLRAB instructions.

This particular commit does not affect the generated machine code and
consists of the following changes:
* document the existing behavior of ThunkInserter class
* introduce ThunkInserterPass template class to get rid of mostly
identical boilerplate code in ARM, AArch64 and X86 implementations
* move the InsertedThunks parameter from `mayUseThunk` to `insertThunks`
method


  Commit: 94a067a306fecceac913cc6d9bfdcd49464358ec
      https://github.com/llvm/llvm-project/commit/94a067a306fecceac913cc6d9bfdcd49464358ec
  Author: Walter Erquinigo <a20012251 at gmail.com>
  Date:   2024-07-04 (Thu, 04 Jul 2024)

  Changed paths:
    M lldb/include/lldb/Target/Language.h
    M lldb/source/Commands/CommandObjectBreakpoint.cpp
    M lldb/source/Plugins/Language/ObjC/ObjCLanguage.h

  Log Message:
  -----------
  [LLDB] Support exception breakpoints for plugin-provided languages (#97675)

CommandObjectBreakpoint has a harcoded list of languages for which
exception breakpoints can be enabled. I'm making this a bit more generic
so that my Mojo plugin can get this feature.
Basically, I'm adding a new overridable method
`Language::SupportsExceptionBreakpoints` that can be used by language
plugins to determine whether they support this feature or not. This
method is used in addition to the hardcoded list and, as an example, I'm
using it for the ObjC language support.

Another route is simply to avoid doing the check that it's being done
right now and simply try to the create the exception breakpoint for
whatever language that is not in the hardcoded list. I'm happy to do
that if the reviewers think it's a good idea.

As a note, the other possible place for adding this
`SupportsExceptionBreakpoints` method is in `LanguageRuntime`. However,
accessing it requires having a process, which is not always the case
when invoking the `breakpoint set -E` command. The process might not be
alive yet, so `Language` is a good second place for this.

And as a final note, I don't want to make this
`SupportsExceptionBreakpoints` complicated. I'm keeping it as simple as
possible because it can easily evolve as it's not part of the public
API.


  Commit: 361350fc89a7579b6e0b2f6da5740556369d0b97
      https://github.com/llvm/llvm-project/commit/361350fc89a7579b6e0b2f6da5740556369d0b97
  Author: Alexander Yermolovich <43973793+ayermolo at users.noreply.github.com>
  Date:   2024-07-04 (Thu, 04 Jul 2024)

  Changed paths:
    M bolt/include/bolt/Core/DebugNames.h
    M bolt/lib/Core/DebugNames.cpp
    M bolt/test/X86/dwarf5-df-types-debug-names.test

  Log Message:
  -----------
  [BOLT][DWARF] Deduplicate Foreign TU list (#97629)

There could be multiple TUs with the same hash in various DWO files. In
bigger binaries this could be in the thousands. Although they could be
structurally different and we need to output Entries for all of them,
for the purposes of figuring out a TU hash we only need one entry in
Foreign TU list.


  Commit: 817f0d9d3099a25ea83fcf633071ccaaeac09954
      https://github.com/llvm/llvm-project/commit/817f0d9d3099a25ea83fcf633071ccaaeac09954
  Author: Sergio Afonso <safonsof at amd.com>
  Date:   2024-07-04 (Thu, 04 Jul 2024)

  Changed paths:
    M flang/lib/Lower/OpenMP/OpenMP.cpp

  Log Message:
  -----------
  [Flang][OpenMP] NFC: Remove unused argument for omp.target lowering (#97564)

This patch removes the `outerCombined` argument from `genTargetOp()` and
the `processReduction` argument from `genTargetClauses()`, as they
aren't used.


  Commit: 5db6eac244bd42aaefd0caac3f824b2e60060f52
      https://github.com/llvm/llvm-project/commit/5db6eac244bd42aaefd0caac3f824b2e60060f52
  Author: Alexis Engelke <engelke at in.tum.de>
  Date:   2024-07-04 (Thu, 04 Jul 2024)

  Changed paths:
    M llvm/lib/Target/X86/X86FlagsCopyLowering.cpp
    M llvm/test/CodeGen/X86/O0-pipeline.ll
    M llvm/test/CodeGen/X86/opt-pipeline.ll

  Log Message:
  -----------
  [X86] Avoid useless DomTree in flags copy lowering (#97628)

Currently, flags copy lowering does two expensive things:

- It traverses the CFG in RPO, and
- It requires a dominator tree that is not preserved.

Most notably, it is the only machine dominator tree user at -O0.

Many functions have no flag copies to begin with, therefore, add an
early exit if EFLAGS has no COPY def.

The legacy pass manager has no way to dynamically decide whether an
analysis is required. Therefore, if there's a copy, get the dominator
tree from the pass manager, if it has one, otherwise, compute it.

These changes should make the pass very cheap for the common case.


  Commit: f15266e9d5d87a291a515064f8f0dd5f0c412ed3
      https://github.com/llvm/llvm-project/commit/f15266e9d5d87a291a515064f8f0dd5f0c412ed3
  Author: Alexis Engelke <engelke at in.tum.de>
  Date:   2024-07-04 (Thu, 04 Jul 2024)

  Changed paths:
    M llvm/lib/MC/MCELFStreamer.cpp
    M llvm/lib/MC/MCObjectStreamer.cpp
    M llvm/lib/Target/SystemZ/MCTargetDesc/SystemZMCCodeEmitter.cpp

  Log Message:
  -----------
  [MC][ELF] Emit instructions directly into fragment (#94950)

Avoid needless copying of instructions and fixups and directly emit into
the fragment small vectors.

This (optionally, second commit) also removes the single use of the
MCCompactEncodedInstFragment to simplify code.


  Commit: 655651a023654a01bba317c0f2561542bb75bcec
      https://github.com/llvm/llvm-project/commit/655651a023654a01bba317c0f2561542bb75bcec
  Author: Nikolas Klauser <nikolasklauser at berlin.de>
  Date:   2024-07-04 (Thu, 04 Jul 2024)

  Changed paths:
    M .github/workflows/libcxx-build-and-test.yaml
    M libcxx/test/libcxx/gdb/gdb_pretty_printer_test.sh.cpp
    M libcxx/test/std/utilities/tuple/tuple.tuple/tuple.cnstr/PR31384.pass.cpp
    R libcxx/trigger

  Log Message:
  -----------
  [libc++] Upgrade to GCC 14 (#97205)


  Commit: 8299bfaf299527c63f61f1bf9abffb88fad3eb38
      https://github.com/llvm/llvm-project/commit/8299bfaf299527c63f61f1bf9abffb88fad3eb38
  Author: Florian Hahn <flo at fhahn.com>
  Date:   2024-07-04 (Thu, 04 Jul 2024)

  Changed paths:
    M llvm/lib/Transforms/Vectorize/LoopVectorize.cpp

  Log Message:
  -----------
  [VPlan] Extract reduction result insertion point to variable (NFCI).

Split off from https://github.com/llvm/llvm-project/pull/92651 as
suggested.


  Commit: 79d6f52c4f56fbada3e14fa924c370e27418222e
      https://github.com/llvm/llvm-project/commit/79d6f52c4f56fbada3e14fa924c370e27418222e
  Author: Nikita Popov <npopov at redhat.com>
  Date:   2024-07-04 (Thu, 04 Jul 2024)

  Changed paths:
    M llvm/include/llvm/Analysis/LazyValueInfo.h
    M llvm/lib/Analysis/LazyValueInfo.cpp
    M llvm/lib/Transforms/Scalar/CorrelatedValuePropagation.cpp
    M llvm/lib/Transforms/Scalar/JumpThreading.cpp

  Log Message:
  -----------
  [LVI] Use Constant instead of Tristate for predicate results

A lot of the users just end up converting it into a Constant
themselves. Doing this in the API leaves less room for error
with vector types, and brings getPredicateResult() closer to
LatticeValueElement::getCompare(), hopefully allowing us to
consolidate them.


  Commit: f4d058fdb1f456fdab9593eab4955a62b6bb8e70
      https://github.com/llvm/llvm-project/commit/f4d058fdb1f456fdab9593eab4955a62b6bb8e70
  Author: Craig Topper <craig.topper at sifive.com>
  Date:   2024-07-04 (Thu, 04 Jul 2024)

  Changed paths:
    M llvm/lib/CodeGen/TargetLoweringBase.cpp
    M llvm/test/CodeGen/X86/shift-combine.ll

  Log Message:
  -----------
  [SelectionDAG] Ignore LegalTypes parameter in TargetLoweringBase::getShiftAmountTy. (#97645)

When this flag was false, `getShiftAmountTy` would return `PointerTy`
instead of the target's preferred shift amount type for scalar shifts.

This used to be needed when the target's preferred type wasn't large
enough to support the shift amount needed for an illegal type. For
example, any scalar type larger than i256 on X86 since X86's preferred
shift amount type is i8.

For a while now, we've had code that uses `MVT::i32` if `LegalTypes` is
true, but the target's preferred type is too small. This fixed a
repeated cause of crashes where the `LegalTypes` flag wasn't set to
false when illegal types could be present.

This has made it unnecessary to set the `LegalTypes` flag correctly, and
as a result more and more places don't. So I think its time for this
flag to go away.

This first patch just disconnects the flag. The interface and all
callers will be cleaned up in follow up patches.

The X86 test change is because we now have the same shift type for both
shifts in a (srl (sub C, (shl X, 32), 32) sequence. This makes the shift
amounts appear equal in value and type which is needed to enable a
combine.


  Commit: 34fe032fdb9315fe8da699126eb506ad6d2883ec
      https://github.com/llvm/llvm-project/commit/34fe032fdb9315fe8da699126eb506ad6d2883ec
  Author: Craig Topper <craig.topper at sifive.com>
  Date:   2024-07-04 (Thu, 04 Jul 2024)

  Changed paths:
    M llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp

  Log Message:
  -----------
  [DAGCombiner] Use getShiftAmountConstant where possible. (#97683)

In #97645, I proposed removing the LegalTypes operand to
TargetLowering::getShiftAmountTy. This means we don't need to use the
DAGCombiner wrapper for getShiftAmountTy that manages this flag. Now we
can use getShiftAmountConstant and let it call
TargetLowering::getShiftAmountTy.


  Commit: fbd1b6567ae41d64f1dbb6b32c7cf8a1b710b8d9
      https://github.com/llvm/llvm-project/commit/fbd1b6567ae41d64f1dbb6b32c7cf8a1b710b8d9
  Author: Michael Buch <michaelbuch12 at gmail.com>
  Date:   2024-07-04 (Thu, 04 Jul 2024)

  Changed paths:
    M lldb/source/Plugins/Language/CPlusPlus/LibCxx.cpp
    M lldb/source/Plugins/Language/CPlusPlus/LibCxx.h
    M lldb/source/Plugins/Language/CPlusPlus/LibCxxMap.cpp

  Log Message:
  -----------
  [lldb][DataFormatter][NFC] Move std::map iterator formatter into LibCxxMap.cpp (#97687)

The two formatters follow very similar techniques to retrieve data out
of the map. We're changing this for `std::map` in
https://github.com/llvm/llvm-project/pull/97579 and plan to change it in
the same way for the iterator formatter. Having them in the same place
will allow us to re-use some of the logic (and we won't have to repeat
some of the clarification comments).


  Commit: 687531fbed080b86c31144bf66c29f4a30e10e84
      https://github.com/llvm/llvm-project/commit/687531fbed080b86c31144bf66c29f4a30e10e84
  Author: Simon Pilgrim <llvm-dev at redking.me.uk>
  Date:   2024-07-04 (Thu, 04 Jul 2024)

  Changed paths:
    M llvm/lib/CodeGen/SelectionDAG/LegalizeIntegerTypes.cpp

  Log Message:
  -----------
  [DAG] PromoteIntRes_EXTRACT_SUBVECTOR - pull out repeated getOperand/getVectorElementType calls. NFC.


  Commit: bb6ab8b4f491cb1eaf6a88ca0b0bb283e3bd8bba
      https://github.com/llvm/llvm-project/commit/bb6ab8b4f491cb1eaf6a88ca0b0bb283e3bd8bba
  Author: Craig Topper <craig.topper at sifive.com>
  Date:   2024-07-04 (Thu, 04 Jul 2024)

  Changed paths:
    M llvm/include/llvm/CodeGen/TargetLowering.h

  Log Message:
  -----------
  [TargetLowering] Update the description of getShiftAmountTy. NFC

After f4d058fdb1f456fdab9593eab4955a62b6bb8e70, the LegalTypes
argument is no longer used.


  Commit: 2307d270ccbf75dc72e8b4406bc0ec88781328f0
      https://github.com/llvm/llvm-project/commit/2307d270ccbf75dc72e8b4406bc0ec88781328f0
  Author: Mikhail R. Gadelha <mikhail at igalia.com>
  Date:   2024-07-04 (Thu, 04 Jul 2024)

  Changed paths:
    M libc/test/src/__support/CMakeLists.txt

  Log Message:
  -----------
  [libc] fix float_comparison_test when an emulator is used to run the test (#97748)

This patch adds a missing ${CMAKE_CROSSCOMPILING_EMULATOR} to the call to libc_str_to_float_comparison_test so the test can run in an emulator, if required.

This is currently required for the rv32 buildbot, which runs in a qemu emulator.


  Commit: 8bb4294be71e10eca02e23aab4f17af905687c4a
      https://github.com/llvm/llvm-project/commit/8bb4294be71e10eca02e23aab4f17af905687c4a
  Author: Mikhail R. Gadelha <mikhail at igalia.com>
  Date:   2024-07-04 (Thu, 04 Jul 2024)

  Changed paths:
    M libc/src/sched/linux/sched_rr_get_interval.cpp
    M libc/test/src/__support/time/linux/timeout_test.cpp

  Log Message:
  -----------
  [libc] Fix compilation warnings on 32-bit archs (#97745)

timespec's tv_nsec is a long int, which has different sizes in 32-bit and 64-bit platforms, so this patch adds one and fixes another static_cast throw warnings in 32-bit archs


  Commit: 0ccec541d526a1be84fdfcf8f42553965dadff78
      https://github.com/llvm/llvm-project/commit/0ccec541d526a1be84fdfcf8f42553965dadff78
  Author: Mikhail R. Gadelha <mikhail at igalia.com>
  Date:   2024-07-04 (Thu, 04 Jul 2024)

  Changed paths:
    M libc/src/__support/FPUtil/generic/FMod.h
    M libc/src/__support/big_int.h
    M libc/test/src/math/smoke/CopySignTest.h

  Log Message:
  -----------
  [libc] Fix compilation when long double is used as float128 (#97747)

Small patch that fixes the compilation when float128 is a long double, e.g., rv32. It fixes a static_cast, adds a missing %= operator and changes a cast to use get_val() in a test case instead


  Commit: 834ecc8b2ad44859f5bcaac9f92178e469390a51
      https://github.com/llvm/llvm-project/commit/834ecc8b2ad44859f5bcaac9f92178e469390a51
  Author: Haojian Wu <hokein.wu at gmail.com>
  Date:   2024-07-04 (Thu, 04 Jul 2024)

  Changed paths:
    M clang/lib/Sema/SemaTemplate.cpp
    M clang/test/AST/ast-dump-ctad-alias.cpp
    M clang/test/SemaCXX/cxx20-ctad-type-alias.cpp

  Log Message:
  -----------
  [clang] CTAD alias: fix transformation for require-clause expr Part2. (#93533)

In the https://github.com/llvm/llvm-project/pull/90961 fix, we miss a
case where the undeduced template parameters of the underlying deduction
guide are not transformed, which leaves incorrect depth/index
information, and causes crashes when evaluating constraints.

This patch fix this missing case.

Fixes #92596
Fixes #92212


  Commit: 4f77677c3b383da99e46fdb29e7b8de63eb72447
      https://github.com/llvm/llvm-project/commit/4f77677c3b383da99e46fdb29e7b8de63eb72447
  Author: Mikhail R. Gadelha <mikhail at igalia.com>
  Date:   2024-07-04 (Thu, 04 Jul 2024)

  Changed paths:
    M libc/src/__support/OSUtil/linux/fcntl.cpp
    M libc/test/src/sys/mman/linux/CMakeLists.txt
    M libc/test/src/sys/mman/linux/shm_test.cpp

  Log Message:
  -----------
  [libc] Implement fcntl when only SYS_fcntl64 is available (#97740)

This patch tries to implement fcntl with either SYS_fcntl or SYS_fcntl64, and also changes a test case to call the fcntl function instead of using the syscall


  Commit: d1dc4169838381688a74f245cdaedbe9fce13848
      https://github.com/llvm/llvm-project/commit/d1dc4169838381688a74f245cdaedbe9fce13848
  Author: Max Winkler <max.enrico.winkler at gmail.com>
  Date:   2024-07-04 (Thu, 04 Jul 2024)

  Changed paths:
    M clang/docs/ReleaseNotes.rst
    M clang/lib/AST/MicrosoftMangle.cpp
    A clang/test/CodeGenCXX/mangle-ms-auto-templates-memptrs.cpp
    A clang/test/CodeGenCXX/mangle-ms-auto-templates-nullptr.cpp
    M llvm/lib/Demangle/MicrosoftDemangle.cpp
    M llvm/test/Demangle/ms-auto-templates.test

  Log Message:
  -----------
  Fix MSVC 1920+ auto NTTP mangling for pointers to members (#97007)

Fixes https://github.com/llvm/llvm-project/issues/70899.

This is a continuation of
https://github.com/llvm/llvm-project/pull/92477 for pointers to member
data and pointers to member functions.

The mangled name must be prefixed with `$M <mangled-type>` for the
deduced type of the nttp parameter.


  Commit: 093ddac68c6855b5c2d786a99475b793e35e2342
      https://github.com/llvm/llvm-project/commit/093ddac68c6855b5c2d786a99475b793e35e2342
  Author: Mark de Wever <koraq at xs4all.nl>
  Date:   2024-07-04 (Thu, 04 Jul 2024)

  Changed paths:
    M libcxx/docs/Status/Cxx20Issues.csv
    M libcxx/src/tzdb.cpp
    M libcxx/test/libcxx/time/time.zone/time.zone.db/leap_seconds.pass.cpp
    M libcxx/test/std/time/time.zone/time.zone.db/leap_seconds.pass.cpp

  Log Message:
  -----------
  [libc++][chrono] Fixes leap seconds. (#90070)

While implementing the UTC clock it turns out that the implementation of
the leap seconds was not correct, it should store the individual value,
not the sum.

It also looks like LWG3359 has not been fully implemented.

Implements parts of:
- LWG3359 <chrono> leap second support should allow for negative leap
seconds


  Commit: d1c911ffe48eef23817d11c900dec30e0e3b5ae4
      https://github.com/llvm/llvm-project/commit/d1c911ffe48eef23817d11c900dec30e0e3b5ae4
  Author: Alexandros Lamprineas <alexandros.lamprineas at arm.com>
  Date:   2024-07-04 (Thu, 04 Jul 2024)

  Changed paths:
    M clang/include/clang/Sema/Sema.h
    M clang/lib/Sema/SemaDecl.cpp
    M clang/lib/Sema/SemaDeclAttr.cpp
    M clang/test/CodeGen/attr-target-version.c
    M clang/test/CodeGenCXX/fmv-namespace.cpp
    M clang/test/Sema/attr-target-version.c

  Log Message:
  -----------
  [clang][FMV] Do not omit explicit default target_version attribute. (#96628)

Fixes a crash and cleans up some dead code.

namespace Foo {
int bar();
__attribute((target_version("default"))) int bar() { return 0; }
__attribute((target_version("mops"))) int bar() { return 1; }
}

$ clang++ --target=aarch64-linux-gnu --rtlib=compiler-rt fmv.cpp

None multiversion type isn't valid here
UNREACHABLE executed at clang/lib/CodeGen/CodeGenModule.cpp:1840! ...
getMangledNameImpl
clang::CodeGen::CodeGenModule::getMangledName
clang::CodeGen::CodeGenModule::EmitGlobal


  Commit: 8270485af12516c159c4a2c6533fa9b149bdc63a
      https://github.com/llvm/llvm-project/commit/8270485af12516c159c4a2c6533fa9b149bdc63a
  Author: Simon Pilgrim <llvm-dev at redking.me.uk>
  Date:   2024-07-04 (Thu, 04 Jul 2024)

  Changed paths:
    M llvm/test/CodeGen/X86/var-permute-128.ll
    M llvm/test/CodeGen/X86/var-permute-256.ll
    M llvm/test/CodeGen/X86/var-permute-512.ll

  Log Message:
  -----------
  [X86] var-permute-*.ll - check memory address math

Expose the memory addressing to simplify checking stack spill/restore manipulation codegen


  Commit: e975ff0a223e79842b693e0ec4d3cac87963869a
      https://github.com/llvm/llvm-project/commit/e975ff0a223e79842b693e0ec4d3cac87963869a
  Author: Simon Pilgrim <llvm-dev at redking.me.uk>
  Date:   2024-07-04 (Thu, 04 Jul 2024)

  Changed paths:
    M llvm/lib/Target/X86/X86ISelDAGToDAG.cpp
    M llvm/test/CodeGen/X86/addr-mode-matcher-3.ll
    M llvm/test/CodeGen/X86/sttni.ll
    M llvm/test/CodeGen/X86/var-permute-128.ll

  Log Message:
  -----------
  [X86] matchAddressRecursively - don't fold zext(shl(x,c)) -> shl(zext(x),c)) if the pattern has multiple uses

Fixes #97533 crash where we hit a case where the root node had referenced the original zext node, which we then deleted - hopefully I can come up with a better solution, but the codegen changes don't look too bad atm (pulls out a shift from some complex LEA nodes that shared the scaled index).


  Commit: c1a5f1ea363560961f52a62335658b445c51b491
      https://github.com/llvm/llvm-project/commit/c1a5f1ea363560961f52a62335658b445c51b491
  Author: Kazu Hirata <kazu at google.com>
  Date:   2024-07-05 (Fri, 05 Jul 2024)

  Changed paths:
    M llvm/lib/Support/CommandLine.cpp

  Log Message:
  -----------
  [Support] Use range-based for loops (NFC) (#97657)


  Commit: b298e2d2d2251767a5ddcdef2310494d3b8da773
      https://github.com/llvm/llvm-project/commit/b298e2d2d2251767a5ddcdef2310494d3b8da773
  Author: Martin Storsjö <martin at martin.st>
  Date:   2024-07-05 (Fri, 05 Jul 2024)

  Changed paths:
    M lld/MinGW/Driver.cpp
    M lld/test/MinGW/driver.test

  Log Message:
  -----------
  [LLD] [MinGW] Reinstate the former spelling in the version message (#97698)

0f9fbbb63cfcd2069441aa2ebef622c9716f8dbb changed the version printouts.
This broke linker detection in Meson, when disambiguating between the
ld.lld and lld-link interfaces, in

https://github.com/mesonbuild/meson/blob/1.4.1/mesonbuild/linkers/detect.py#L67,
which checks for the string "(compatible with GNU linkers)" including
the parentheses.

Reinstate the parentheses in the printout here, for compatibility with
Meson. The printout looks a little odd in this form, "LLD 19.0.0
(https://github.com/llvm/llvm-project
173514d58ec4e6166670f1e37a038df3865c8b96) (compatible with GNU
linkers)", but works with Meson.

The Meson check is loosened in https://github.com/mesonbuild/meson/pull/13383,
but existing versions of Meson with the too strict check will be around
for quite some time, so we should only change LLD to the new form once
older versions of Meson aren't used for these targets any longer, i.e.
earliest within a few years.


  Commit: 3141c11fe8f5ebd8a8645b7977f2f1055a33bb33
      https://github.com/llvm/llvm-project/commit/3141c11fe8f5ebd8a8645b7977f2f1055a33bb33
  Author: Craig Topper <craig.topper at sifive.com>
  Date:   2024-07-04 (Thu, 04 Jul 2024)

  Changed paths:
    M llvm/include/llvm/CodeGen/TargetLowering.h
    M llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
    M llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp
    M llvm/lib/CodeGen/SelectionDAG/TargetLowering.cpp
    M llvm/lib/CodeGen/TargetLoweringBase.cpp

  Log Message:
  -----------
  [SelectionDAG] Remove LegalTypes argument from getShiftAmountTy. NFC (#97757)

This argument is no longer used inside the function. Remove it from the
interface.


  Commit: 7a9ef0f2688805d0e7ea22f91eb3608e8cab6fd4
      https://github.com/llvm/llvm-project/commit/7a9ef0f2688805d0e7ea22f91eb3608e8cab6fd4
  Author: Anchu Rajendran S <asudhaku at amd.com>
  Date:   2024-07-04 (Thu, 04 Jul 2024)

  Changed paths:
    M mlir/include/mlir/Dialect/OpenMP/OpenMPClauseOperands.h
    M mlir/include/mlir/Dialect/OpenMP/OpenMPClauses.td
    M mlir/include/mlir/Dialect/OpenMP/OpenMPOps.td
    M mlir/lib/Dialect/OpenMP/IR/OpenMPDialect.cpp
    M mlir/test/Dialect/OpenMP/invalid.mlir
    M mlir/test/Dialect/OpenMP/ops.mlir

  Log Message:
  -----------
  Adding masked operation to OpenMP Dialect (#96022)

Adding MLIR Op support for omp masked. Omp masked is introduced in 5.2
standard and allows a region to be executed by threads
specified by a programmer. This is achieved with the help of filter
clause which helps to specify thread id expected to execute the region.


  Commit: 839ed1ba553346b0c225e9b839cf3cb716dc7412
      https://github.com/llvm/llvm-project/commit/839ed1ba553346b0c225e9b839cf3cb716dc7412
  Author: Aiden Grossman <aidengrossman at google.com>
  Date:   2024-07-04 (Thu, 04 Jul 2024)

  Changed paths:
    M compiler-rt/include/profile/MemProfData.inc

  Log Message:
  -----------
  [MemProf][compiler-rt] Update MemProfData preprocessor directives

This Memprof preprocessor directives have diverged at some point. This
patch fixes that by copying an additional include from the LLVM side to
the compiler-rt side so the two files are identical again.


  Commit: 4762f3bab05768123e7fbf6a5408a2418c52e31c
      https://github.com/llvm/llvm-project/commit/4762f3bab05768123e7fbf6a5408a2418c52e31c
  Author: Elvis Wang <110374989+ElvisWang123 at users.noreply.github.com>
  Date:   2024-07-05 (Fri, 05 Jul 2024)

  Changed paths:
    M llvm/lib/Target/RISCV/RISCVTargetTransformInfo.cpp
    M llvm/test/Analysis/CostModel/RISCV/rvv-intrinsics.ll
    M llvm/test/Transforms/VectorCombine/RISCV/vpintrin-scalarization.ll

  Log Message:
  -----------
  [RISCV][TTI] Add cost of type based binOp VP intrinsics with functionalOPC. (#93435)

Intrinsics not supported in the backend will fall Into BasicTTIImpl,
which will check if the VP intrinsic is a type based instruction.
All type based instruction will fall into the
`getTypeBasedIntrinsicInstrCost()` which doesn't support instruction
with scalable vector type.

This patch adds the instruction cost for type based binOp VP intrinsic
instructions in the backend to get the valid instruction costs.
The cost of type based binOp VP intrinsics will be same as their non-VP
counterpart.


  Commit: bfa762a5a59aa8bf64f589b36da24e427e8806c3
      https://github.com/llvm/llvm-project/commit/bfa762a5a59aa8bf64f589b36da24e427e8806c3
  Author: Bimo <rui.xu at intel.com>
  Date:   2024-07-05 (Fri, 05 Jul 2024)

  Changed paths:
    M mlir/include/mlir/Dialect/Linalg/IR/LinalgNamedStructuredOps.yaml
    M mlir/python/mlir/dialects/linalg/opdsl/ops/core_named_ops.py
    M mlir/test/python/dialects/linalg/opdsl/test_core_named_ops.py

  Log Message:
  -----------
  [MLIR][Python] fix class name of powf and negf in linalg (#97696)

The following logic can lead to a class name mismatch when using
`linalg.powf` in Python. This PR fixed the issue and also renamed
`NegfOp` to `NegFOp` in linalg to adhere to the naming convention, as
exemplified by `arith::NegFOp`.


https://github.com/llvm/llvm-project/blob/173514d58ec4e6166670f1e37a038df3865c8b96/mlir/python/mlir/dialects/linalg/opdsl/lang/dsl.py#L140-L143
```
# linalg.powf(arg0, arg1, outs=[init_result.result])
NotImplementedError: Unknown named op_name / op_class_name: powf / PowfOp
```


  Commit: 8419da8bd4f8c21c452051e57220d495df4af2a0
      https://github.com/llvm/llvm-project/commit/8419da8bd4f8c21c452051e57220d495df4af2a0
  Author: Craig Topper <craig.topper at sifive.com>
  Date:   2024-07-04 (Thu, 04 Jul 2024)

  Changed paths:
    M llvm/include/llvm/CodeGen/SelectionDAG.h
    M llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
    M llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp
    M llvm/lib/CodeGen/SelectionDAG/TargetLowering.cpp

  Log Message:
  -----------
  [SelectionDAG] Remove LegalTypes argument from getShiftAmountConstant. (#97653)

#97645 proposed to remove LegalTypes from getShiftAmountTy. This patches
removes it from getShiftAmountConstant which is one of the callers of
getShiftAmountTy.


  Commit: f737865be2a115955880bb398b4bf61145db26a5
      https://github.com/llvm/llvm-project/commit/f737865be2a115955880bb398b4bf61145db26a5
  Author: Alexandre Ganea <alex_toresh at yahoo.fr>
  Date:   2024-07-04 (Thu, 04 Jul 2024)

  Changed paths:
    M llvm/docs/ReleaseNotes.rst
    M llvm/test/tools/llvm-config/paths.test
    M llvm/tools/llvm-config/llvm-config.cpp

  Log Message:
  -----------
  Revert "[llvm-config] Quote and escape paths if necessary (#97305)"

This reverts commit e8c94149d3ca12d4d02fb8de89981c68ffa278f3.


  Commit: 33112cbf59d838d25a4bf2a8c539d1aceda191c7
      https://github.com/llvm/llvm-project/commit/33112cbf59d838d25a4bf2a8c539d1aceda191c7
  Author: Craig Topper <craig.topper at sifive.com>
  Date:   2024-07-04 (Thu, 04 Jul 2024)

  Changed paths:
    M llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp

  Log Message:
  -----------
  [DAGCombiner] Remove unnecessary assert from getShiftAmountTy wrapper. NFC

The same assert appears in the TargetLowering function.

Refine comment to describe as a convenience wrapper and leave it to
TargetLowering documentation to explain.


  Commit: ffc459de7540eaf9bdbcb7b7cc2376fd7e9e7f11
      https://github.com/llvm/llvm-project/commit/ffc459de7540eaf9bdbcb7b7cc2376fd7e9e7f11
  Author: Yunzezhu94 <93851382+Yunzezhu94 at users.noreply.github.com>
  Date:   2024-07-05 (Fri, 05 Jul 2024)

  Changed paths:
    M llvm/lib/Target/RISCV/RISCVISelLowering.cpp
    A llvm/test/CodeGen/RISCV/fold-binop-into-select-return-constant.ll

  Log Message:
  -----------
  [RISCV] Add a check in lowerSELECT after foldBinOpIntoSelectIfProfitable (#97391)

In certain case foldBinOpIntoSelectIfProfitable may return a constant
node, the node will be lowered in lowerSELECT and lead to crash.
This patch fix the bug by adding an extra check before lowerSELECT that
do lowerSELECT as before when foldBinOpIntoSelectIfProfitable returns a
select node, and return the node directly when
foldBinOpIntoSelectIfProfitable returns a constant node.

Fixes https://github.com/llvm/llvm-project/issues/97390


  Commit: 9e211744b82a72e08c137f75b1c671713e2891af
      https://github.com/llvm/llvm-project/commit/9e211744b82a72e08c137f75b1c671713e2891af
  Author: Youngsuk Kim <youngsuk.kim at hpe.com>
  Date:   2024-07-04 (Thu, 04 Jul 2024)

  Changed paths:
    M clang/lib/InstallAPI/DiagnosticBuilderWrappers.cpp
    M clang/unittests/Frontend/CompilerInstanceTest.cpp
    M clang/unittests/Tooling/LexicallyOrderedRecursiveASTVisitorTest.cpp
    M clang/utils/TableGen/ClangAttrEmitter.cpp

  Log Message:
  -----------
  [clang] Avoid 'raw_string_ostream::str' (NFC)

Since `raw_string_ostream` doesn't own the string buffer, it is
desirable (in terms of memory safety) for users to directly reference
the string buffer rather than use `raw_string_ostream::str()`.

Work towards TODO item to remove `raw_string_ostream::str()`.


  Commit: 23aff11e9c345fb0ba501a1751997baae15f3b52
      https://github.com/llvm/llvm-project/commit/23aff11e9c345fb0ba501a1751997baae15f3b52
  Author: Pengcheng Wang <wangpengcheng.pp at bytedance.com>
  Date:   2024-07-05 (Fri, 05 Jul 2024)

  Changed paths:
    M llvm/lib/Target/RISCV/RISCVFeatures.td
    M llvm/lib/Target/RISCV/RISCVISelLowering.cpp
    A llvm/test/CodeGen/RISCV/convert-highly-predictable-select-to-branch.ll

  Log Message:
  -----------
  [RISCV] Add FeaturePredictableSelectIsExpensive

This information is used in CGP/SelectOpt to decide when to convert
selects into branches.

Reviewers: dtcxzyw, mgudim, asb, preames, topperc, lukel97

Reviewed By: dtcxzyw, topperc, lukel97

Pull Request: https://github.com/llvm/llvm-project/pull/97708


  Commit: db782b44b3471c0ab41950c3f79d0ea7b916c135
      https://github.com/llvm/llvm-project/commit/db782b44b3471c0ab41950c3f79d0ea7b916c135
  Author: Luke Lau <luke at igalia.com>
  Date:   2024-07-05 (Fri, 05 Jul 2024)

  Changed paths:
    M llvm/lib/Target/RISCV/RISCVInsertVSETVLI.cpp
    M llvm/test/CodeGen/RISCV/rvv/vsetvli-insert-crossbb.ll
    M llvm/test/CodeGen/RISCV/rvv/vsetvli-insert-crossbb.mir
    M llvm/test/Transforms/LoopStrengthReduce/RISCV/lsr-drop-solution.ll

  Log Message:
  -----------
  [RISCV] Don't forward AVL in VSETVLIInfo if it would clobber other definitions (#97264)

This fixes a crash found when compiling OpenBLAS with -mllvm
-verify-machineinstrs.

When we "forward" the AVL from the output of a vsetvli, we might have to
extend the LiveInterval of the AVL to where insert the new vsetvli.

Most of the time we are able to extend the LiveInterval because there's
only one val num (definition) for the register. But PHI elimination can
assign multiple values to the same register, in which case we end up
clobbering a different val num when extending:

    %x = PseudoVSETVLI %avl, ...
    %avl = ADDI ...
    %v = PseudoVADD ..., avl=%x
    ; %avl is forwarded to PseudoVADD:
    %x = PseudoVSETVLI %avl, ...
    %avl = ADDI ...
    %v = PseudoVADD ..., avl=%avl

Here there's no way to extend the %avl from the vsetvli since %avl is
redefined, i.e. we have two val nums.

This fixes it by only forwarding it when we have exactly one val num,
where it should be safe to extend it.


  Commit: ca94bf9f2bd15fe34936f1759bffd26d7e93b182
      https://github.com/llvm/llvm-project/commit/ca94bf9f2bd15fe34936f1759bffd26d7e93b182
  Author: Luke Lau <luke at igalia.com>
  Date:   2024-07-05 (Fri, 05 Jul 2024)

  Changed paths:
    M .github/workflows/libcxx-build-and-test.yaml
    M bolt/include/bolt/Core/DebugNames.h
    M bolt/lib/Core/DebugNames.cpp
    M bolt/test/X86/dwarf5-df-types-debug-names.test
    M clang-tools-extra/clang-tidy/bugprone/BugproneTidyModule.cpp
    M clang-tools-extra/clang-tidy/bugprone/CMakeLists.txt
    A clang-tools-extra/clang-tidy/bugprone/PointerArithmeticOnPolymorphicObjectCheck.cpp
    A clang-tools-extra/clang-tidy/bugprone/PointerArithmeticOnPolymorphicObjectCheck.h
    M clang-tools-extra/clang-tidy/cert/CERTTidyModule.cpp
    M clang-tools-extra/docs/ReleaseNotes.rst
    A clang-tools-extra/docs/clang-tidy/checks/bugprone/pointer-arithmetic-on-polymorphic-object.rst
    A clang-tools-extra/docs/clang-tidy/checks/cert/ctr56-cpp.rst
    M clang-tools-extra/docs/clang-tidy/checks/list.rst
    A clang-tools-extra/test/clang-tidy/checkers/bugprone/pointer-arithmetic-on-polymorphic-object-all.cpp
    A clang-tools-extra/test/clang-tidy/checkers/bugprone/pointer-arithmetic-on-polymorphic-object-decl-only.cpp
    M clang/docs/ReleaseNotes.rst
    M clang/include/clang/Sema/Sema.h
    M clang/include/clang/StaticAnalyzer/Core/PathSensitive/MemRegion.h
    M clang/lib/AST/MicrosoftMangle.cpp
    M clang/lib/InstallAPI/DiagnosticBuilderWrappers.cpp
    M clang/lib/Sema/SemaDecl.cpp
    M clang/lib/Sema/SemaDeclAttr.cpp
    M clang/lib/Sema/SemaTemplate.cpp
    M clang/lib/StaticAnalyzer/Checkers/CStringChecker.cpp
    M clang/lib/StaticAnalyzer/Core/MemRegion.cpp
    M clang/test/AST/ast-dump-ctad-alias.cpp
    M clang/test/Analysis/bstring_UninitRead.c
    M clang/test/CodeGen/attr-target-version.c
    M clang/test/CodeGenCXX/fmv-namespace.cpp
    A clang/test/CodeGenCXX/mangle-ms-auto-templates-memptrs.cpp
    A clang/test/CodeGenCXX/mangle-ms-auto-templates-nullptr.cpp
    M clang/test/Sema/attr-target-version.c
    M clang/test/SemaCXX/cxx20-ctad-type-alias.cpp
    M clang/unittests/Frontend/CompilerInstanceTest.cpp
    M clang/unittests/Tooling/LexicallyOrderedRecursiveASTVisitorTest.cpp
    M clang/utils/TableGen/ClangAttrEmitter.cpp
    M clang/www/analyzer/alpha_checks.html
    M clang/www/analyzer/available_checks.html
    M compiler-rt/include/profile/MemProfData.inc
    M compiler-rt/test/fuzzer/fuzzer-leak.test
    M flang/lib/Lower/OpenMP/DataSharingProcessor.cpp
    M flang/lib/Lower/OpenMP/OpenMP.cpp
    M libc/src/__support/FPUtil/generic/FMod.h
    M libc/src/__support/OSUtil/linux/fcntl.cpp
    M libc/src/__support/big_int.h
    M libc/src/sched/linux/sched_rr_get_interval.cpp
    M libc/test/src/__support/CMakeLists.txt
    M libc/test/src/__support/time/linux/timeout_test.cpp
    M libc/test/src/math/smoke/CopySignTest.h
    M libc/test/src/sys/mman/linux/CMakeLists.txt
    M libc/test/src/sys/mman/linux/shm_test.cpp
    M libcxx/docs/Status/Cxx20Issues.csv
    M libcxx/src/tzdb.cpp
    M libcxx/test/libcxx/gdb/gdb_pretty_printer_test.sh.cpp
    M libcxx/test/libcxx/time/time.zone/time.zone.db/leap_seconds.pass.cpp
    M libcxx/test/std/time/time.zone/time.zone.db/leap_seconds.pass.cpp
    M libcxx/test/std/utilities/tuple/tuple.tuple/tuple.cnstr/PR31384.pass.cpp
    R libcxx/trigger
    M lld/MinGW/Driver.cpp
    M lld/test/MinGW/driver.test
    M lldb/include/lldb/Target/Language.h
    M lldb/source/Commands/CommandObjectBreakpoint.cpp
    M lldb/source/Plugins/Language/CPlusPlus/LibCxx.cpp
    M lldb/source/Plugins/Language/CPlusPlus/LibCxx.h
    M lldb/source/Plugins/Language/CPlusPlus/LibCxxMap.cpp
    M lldb/source/Plugins/Language/ObjC/ObjCLanguage.h
    M lldb/test/API/python_api/thread/TestThreadAPI.py
    M lldb/unittests/ValueObject/DumpValueObjectOptionsTests.cpp
    M llvm/cmake/config.guess
    M llvm/docs/LangRef.rst
    M llvm/docs/ReleaseNotes.rst
    M llvm/include/llvm/Analysis/LazyValueInfo.h
    M llvm/include/llvm/Analysis/LoopAccessAnalysis.h
    M llvm/include/llvm/Analysis/TargetTransformInfoImpl.h
    M llvm/include/llvm/CodeGen/IndirectThunks.h
    M llvm/include/llvm/CodeGen/SelectionDAG.h
    M llvm/include/llvm/CodeGen/TargetLowering.h
    M llvm/include/llvm/IR/Intrinsics.td
    M llvm/lib/Analysis/LazyValueInfo.cpp
    M llvm/lib/Analysis/LoopAccessAnalysis.cpp
    M llvm/lib/Analysis/ValueTracking.cpp
    M llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
    M llvm/lib/CodeGen/SelectionDAG/LegalizeIntegerTypes.cpp
    M llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp
    M llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
    M llvm/lib/CodeGen/SelectionDAG/TargetLowering.cpp
    M llvm/lib/CodeGen/TargetLoweringBase.cpp
    M llvm/lib/Demangle/MicrosoftDemangle.cpp
    M llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyld.cpp
    M llvm/lib/IR/Value.cpp
    M llvm/lib/IR/Verifier.cpp
    M llvm/lib/MC/MCELFStreamer.cpp
    M llvm/lib/MC/MCObjectStreamer.cpp
    M llvm/lib/SandboxIR/SandboxIR.cpp
    M llvm/lib/Support/APFloat.cpp
    M llvm/lib/Support/CommandLine.cpp
    M llvm/lib/Target/AArch64/AArch64SLSHardening.cpp
    M llvm/lib/Target/AArch64/AArch64TargetTransformInfo.cpp
    M llvm/lib/Target/ARM/ARMSLSHardening.cpp
    M llvm/lib/Target/RISCV/RISCVFeatures.td
    M llvm/lib/Target/RISCV/RISCVISelLowering.cpp
    M llvm/lib/Target/RISCV/RISCVInsertVSETVLI.cpp
    M llvm/lib/Target/RISCV/RISCVTargetTransformInfo.cpp
    M llvm/lib/Target/SystemZ/MCTargetDesc/SystemZMCCodeEmitter.cpp
    M llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp
    M llvm/lib/Target/X86/X86FlagsCopyLowering.cpp
    M llvm/lib/Target/X86/X86ISelDAGToDAG.cpp
    M llvm/lib/Target/X86/X86ISelLowering.cpp
    M llvm/lib/Target/X86/X86IndirectThunks.cpp
    M llvm/lib/Transforms/Scalar/CorrelatedValuePropagation.cpp
    M llvm/lib/Transforms/Scalar/JumpThreading.cpp
    M llvm/lib/Transforms/Scalar/LoopFlatten.cpp
    M llvm/lib/Transforms/Scalar/LowerConstantIntrinsics.cpp
    M llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
    M llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
    A llvm/test/Analysis/BasicAA/ptr-vector.ll
    M llvm/test/Analysis/CostModel/AArch64/sve-intrinsics.ll
    M llvm/test/Analysis/CostModel/RISCV/rvv-intrinsics.ll
    M llvm/test/CodeGen/AArch64/fcmp.ll
    A llvm/test/CodeGen/AArch64/itofp-bf16.ll
    M llvm/test/CodeGen/AArch64/itofp.ll
    A llvm/test/CodeGen/AArch64/partial-reduction-add.ll
    A llvm/test/CodeGen/RISCV/convert-highly-predictable-select-to-branch.ll
    A llvm/test/CodeGen/RISCV/fold-binop-into-select-return-constant.ll
    M llvm/test/CodeGen/RISCV/rvv/fixed-vectors-strided-load-store-asm.ll
    M llvm/test/CodeGen/RISCV/rvv/fixed-vectors-strided-load-store.ll
    M llvm/test/CodeGen/RISCV/rvv/vsetvli-insert-crossbb.ll
    M llvm/test/CodeGen/RISCV/rvv/vsetvli-insert-crossbb.mir
    M llvm/test/CodeGen/X86/O0-pipeline.ll
    M llvm/test/CodeGen/X86/addr-mode-matcher-3.ll
    M llvm/test/CodeGen/X86/opt-pipeline.ll
    M llvm/test/CodeGen/X86/shift-combine.ll
    M llvm/test/CodeGen/X86/sttni.ll
    M llvm/test/CodeGen/X86/var-permute-128.ll
    M llvm/test/CodeGen/X86/var-permute-256.ll
    M llvm/test/CodeGen/X86/var-permute-512.ll
    M llvm/test/CodeGen/X86/vselect-avx.ll
    M llvm/test/Demangle/ms-auto-templates.test
    A llvm/test/MC/X86/AMX/amx-error.s
    M llvm/test/Transforms/CorrelatedValuePropagation/vectors.ll
    M llvm/test/Transforms/InstCombine/X86/x86-pmulh.ll
    M llvm/test/Transforms/InstCombine/X86/x86-pmulhu.ll
    A llvm/test/Transforms/LoopFlatten/preserving_debugloc_br.ll
    M llvm/test/Transforms/LoopStrengthReduce/RISCV/lsr-drop-solution.ll
    A llvm/test/Transforms/LoopVectorize/RISCV/first-order-recurrence-scalable-vf1.ll
    A llvm/test/Transforms/LoopVectorize/first-order-recurrence-scalable-vf1.ll
    A llvm/test/Transforms/LowerConstantIntrinsics/preserving-debugloc-br.ll
    A llvm/test/Transforms/Mem2Reg/single-store.ll
    M llvm/test/Transforms/VectorCombine/RISCV/vpintrin-scalarization.ll
    M llvm/test/tools/llvm-config/paths.test
    M llvm/tools/llvm-config/llvm-config.cpp
    M llvm/unittests/TargetParser/TargetParserTest.cpp
    M llvm/utils/TableGen/ARMTargetDefEmitter.cpp
    M llvm/utils/gn/secondary/clang-tools-extra/clang-tidy/bugprone/BUILD.gn
    M mlir/include/mlir/Dialect/Linalg/IR/LinalgNamedStructuredOps.yaml
    M mlir/include/mlir/Dialect/OpenMP/OpenMPClauseOperands.h
    M mlir/include/mlir/Dialect/OpenMP/OpenMPClauses.td
    M mlir/include/mlir/Dialect/OpenMP/OpenMPOps.td
    M mlir/include/mlir/Dialect/SCF/IR/SCFOps.td
    M mlir/include/mlir/Dialect/SCF/Utils/Utils.h
    M mlir/include/mlir/Dialect/Vector/IR/VectorOps.td
    M mlir/include/mlir/Interfaces/LoopLikeInterface.h
    M mlir/lib/Conversion/VectorToLLVM/ConvertVectorToLLVM.cpp
    M mlir/lib/Dialect/OpenMP/IR/OpenMPDialect.cpp
    M mlir/lib/Dialect/SCF/IR/SCF.cpp
    M mlir/lib/Dialect/SCF/TransformOps/SCFTransformOps.cpp
    M mlir/lib/Dialect/SCF/Transforms/ParallelLoopFusion.cpp
    M mlir/lib/Dialect/SCF/Utils/Utils.cpp
    M mlir/lib/Dialect/Vector/IR/VectorOps.cpp
    M mlir/lib/Interfaces/LoopLikeInterface.cpp
    M mlir/python/mlir/dialects/linalg/opdsl/ops/core_named_ops.py
    M mlir/test/Conversion/VectorToLLVM/vector-to-llvm.mlir
    M mlir/test/Dialect/OpenMP/invalid.mlir
    M mlir/test/Dialect/OpenMP/ops.mlir
    M mlir/test/Dialect/SCF/transform-loop-fuse-sibling.mlir
    M mlir/test/Dialect/Vector/canonicalize.mlir
    M mlir/test/Dialect/Vector/invalid.mlir
    M mlir/test/Dialect/Vector/ops.mlir
    M mlir/test/python/dialects/linalg/opdsl/test_core_named_ops.py

  Log Message:
  -----------
  [𝘀𝗽𝗿] changes introduced through rebase

Created using spr 1.3.6-beta.1

[skip ci]


Compare: https://github.com/llvm/llvm-project/compare/52d9cac11192...ca94bf9f2bd1

To unsubscribe from these emails, change your notification settings at https://github.com/llvm/llvm-project/settings/notifications


More information about the All-commits mailing list