[Mlir-commits] [mlir] [mlir][acc] Add ACCSpecializeForDevice and ACCSpecializeForHost passes (PR #173407)
Emilio Cota
llvmlistbot at llvm.org
Wed Dec 24 19:12:38 PST 2025
cota wrote:
This PR introduced a use-after-free error under Address Sanitizer:
```
$ git checkout 51253b31551796c6857e56f48531e15923aa49c5 -b razvan1
$ mkdir build
$ cd build
$ cmake -G Ninja ../llvm -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_PROJECTS="mlir" -DLLVM_TARGETS_TO_BUILD="X86" -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DLLVM_USE_SANITIZER="Address" -DLLVM_USE_LINKER=lld
$ ninja check-mlir
```
<details>
<summary>Output</summary>
```
[0/1] Running the MLIR regression tests
-- Testing: 3477 tests, 48 workers --
Testing:
FAIL: MLIR :: Dialect/OpenACC/acc-specialize-for-host.mlir (4 of 3477)
******************** TEST 'MLIR :: Dialect/OpenACC/acc-specialize-for-host.mlir' FAILED ********************
Exit Code: 2
Command Output (stdout):
--
# RUN: at line 1
/home/src/llvm-project/build/bin/mlir-opt /home/src/llvm-project/mlir/test/Dialect/OpenACC/acc-specialize-for-host.mlir -acc-specialize-for-host | /home/src/llvm-project/build/bin/FileCheck /home/src/llvm-project/mlir/test/Dialect/OpenACC/acc-specialize-for-host.mlir
# executed command: /home/src/llvm-project/build/bin/mlir-opt /home/src/llvm-project/mlir/test/Dialect/OpenACC/acc-specialize-for-host.mlir -acc-specialize-for-host
# .---command stderr------------
# | =================================================================
# | ==431836==ERROR: AddressSanitizer: heap-use-after-free on address 0x50700001c824 at pc 0x555e92b08c55 bp 0x7f7cfc5fcef0 sp 0x7f7cfc5fcee8
# | READ of size 4 at 0x50700001c824 thread T2
# | #0 0x555e92b08c54 in getResults /home/src/llvm-project/mlir/include/mlir/IR/Operation.h:416:12
# | #1 0x555e92b08c54 in use_empty /home/src/llvm-project/mlir/include/mlir/IR/Operation.h:852:29
# | #2 0x555e92b08c54 in mlir::isOpTriviallyDead(mlir::Operation*) /home/src/llvm-project/mlir/lib/Interfaces/SideEffectInterfaces.cpp:36:14
# | #3 0x555e92708317 in (anonymous namespace)::GreedyPatternRewriteDriver::processWorklist() /home/src/llvm-project/mlir/lib/Transforms/Utils/GreedyPatternRewriteDriver.cpp:484:9
# | #4 0x555e927040f8 in operator() /home/src/llvm-project/mlir/lib/Transforms/Utils/GreedyPatternRewriteDriver.cpp:890:31
# | #5 0x555e927040f8 in callback_fn<(lambda at /home/src/llvm-project/mlir/lib/Transforms/Utils/GreedyPatternRewriteDriver.cpp:878:9)> /home/src/llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:46:12
# | #6 0x555e927040f8 in operator() /home/src/llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:69:12
# | #7 0x555e927040f8 in executeAction<(anonymous namespace)::GreedyPatternRewriteIteration, long &> /home/src/llvm-project/mlir/include/mlir/IR/MLIRContext.h:290:7
# | #8 0x555e927040f8 in simplify /home/src/llvm-project/mlir/lib/Transforms/Utils/GreedyPatternRewriteDriver.cpp:877:10
# | #9 0x555e927040f8 in mlir::applyPatternsGreedily(mlir::Region&, mlir::FrozenRewritePatternSet const&, mlir::GreedyRewriteConfig, bool*) /home/src/llvm-project/mlir/lib/Transforms/Utils/GreedyPatternRewriteDriver.cpp:935:47
# | #10 0x555e82c5b97d in applyPatternsGreedily /home/src/llvm-project/mlir/include/mlir/Transforms/GreedyPatternRewriteDriver.h:224:15
# | #11 0x555e82c5b97d in (anonymous namespace)::ACCSpecializeForHost::runOnOperation() /home/src/llvm-project/mlir/lib/Dialect/OpenACC/Transforms/ACCSpecializeForHost.cpp:347:18
# | #12 0x555e927ee0aa in operator() /home/src/llvm-project/mlir/lib/Pass/Pass.cpp:612:19
# | #13 0x555e927ee0aa in callback_fn<(lambda at /home/src/llvm-project/mlir/lib/Pass/Pass.cpp:607:9)> /home/src/llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:46:12
# | #14 0x555e927ee0aa in operator() /home/src/llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:69:12
# | #15 0x555e927ee0aa in executeAction<mlir::PassExecutionAction, mlir::Pass &> /home/src/llvm-project/mlir/include/mlir/IR/MLIRContext.h:290:7
# | #16 0x555e927ee0aa in mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) /home/src/llvm-project/mlir/lib/Pass/Pass.cpp:606:23
# | #17 0x555e927ef711 in mlir::detail::OpToOpPassAdaptor::runPipeline(mlir::OpPassManager&, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstrumentation::PipelineParentInfo const*) /home/src/llvm-project/mlir/lib/Pass/Pass.cpp:688:16
# | #18 0x555e92800a43 in operator() /home/src/llvm-project/mlir/lib/Pass/Pass.cpp:1001:36
# | #19 0x555e92800a43 in operator()<OpPMInfo &> /home/src/llvm-project/mlir/include/mlir/IR/Threading.h:120:12
# | #20 0x555e92800a43 in operator() /home/src/llvm-project/mlir/include/mlir/IR/Threading.h:62:18
# | #21 0x555e92800a43 in void llvm::detail::UniqueFunctionBase<void>::CallImpl<llvm::LogicalResult mlir::failableParallelForEach<__gnu_cxx::__normal_iterator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo*, std::vector<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo, std::allocator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo>>>, void mlir::parallelForEach<__gnu_cxx::__normal_iterator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo*, std::vector<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo, std::allocator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo>>>, mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::$_0>(mlir::MLIRContext*, __gnu_cxx::__normal_iterator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo*, std::vector<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo, std::allocator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo>>>, __gnu_cxx::__normal_iterator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo*, std::vector<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo, std::allocator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo>>>, mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::$_0&&)::'lambda'(__gnu_cxx::__normal_iterator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo*, std::vector<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo, std::allocator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo>>>&&)>(mlir::MLIRContext*, __gnu_cxx::__normal_iterator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo*, std::vector<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo, std::allocator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo>>>, __gnu_cxx::__normal_iterator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo*, std::vector<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo, std::allocator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo>>>, mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::$_0&&)::'lambda'()>(void*) /home/src/llvm-project/llvm/include/llvm/ADT/FunctionExtras.h:212:12
# | #22 0x555e927196e6 in operator() /home/src/llvm-project/llvm/include/llvm/ADT/FunctionExtras.h:364:12
# | #23 0x555e927196e6 in __invoke_impl<void, llvm::unique_function<void ()> > /usr/lib/gcc/x86_64-linux-gnu/14/../../../../include/c++/14/bits/invoke.h:61:14
# | #24 0x555e927196e6 in __invoke<llvm::unique_function<void ()> > /usr/lib/gcc/x86_64-linux-gnu/14/../../../../include/c++/14/bits/invoke.h:96:14
# | #25 0x555e927196e6 in _M_invoke<0UL> /usr/lib/gcc/x86_64-linux-gnu/14/../../../../include/c++/14/bits/std_thread.h:301:13
# | #26 0x555e927196e6 in operator() /usr/lib/gcc/x86_64-linux-gnu/14/../../../../include/c++/14/bits/std_thread.h:308:11
# | #27 0x555e927196e6 in operator() /usr/lib/gcc/x86_64-linux-gnu/14/../../../../include/c++/14/future:1439:6
# | #28 0x555e927196e6 in __invoke_impl<std::unique_ptr<std::__future_base::_Result<void>, std::__future_base::_Result_base::_Deleter>, std::__future_base::_Task_setter<std::unique_ptr<std::__future_base::_Result<void>, std::__future_base::_Result_base::_Deleter>, std::thread::_Invoker<std::tuple<llvm::unique_function<void ()> > >, void> &> /usr/lib/gcc/x86_64-linux-gnu/14/../../../../include/c++/14/bits/invoke.h:61:14
# | #29 0x555e927196e6 in __invoke_r<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter>, std::__future_base::_Task_setter<std::unique_ptr<std::__future_base::_Result<void>, std::__future_base::_Result_base::_Deleter>, std::thread::_Invoker<std::tuple<llvm::unique_function<void ()> > >, void> &> /usr/lib/gcc/x86_64-linux-gnu/14/../../../../include/c++/14/bits/invoke.h:114:9
# | #30 0x555e927196e6 in std::_Function_handler<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> (), std::__future_base::_Task_setter<std::unique_ptr<std::__future_base::_Result<void>, std::__future_base::_Result_base::_Deleter>, std::thread::_Invoker<std::tuple<llvm::unique_function<void ()>>>, void>>::_M_invoke(std::_Any_data const&) /usr/lib/gcc/x86_64-linux-gnu/14/../../../../include/c++/14/bits/std_function.h:290:9
# | #31 0x555e8cf2f04e in operator() /usr/lib/gcc/x86_64-linux-gnu/14/../../../../include/c++/14/bits/std_function.h:591:9
# | #32 0x555e8cf2f04e in std::__future_base::_State_baseV2::_M_do_set(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*) /usr/lib/gcc/x86_64-linux-gnu/14/../../../../include/c++/14/future:596:27
# | #33 0x7f7d002a1bc6 in __pthread_once_slow nptl/pthread_once.c:116:7
# | #34 0x7f7d002a1c38 in __pthread_once nptl/pthread_once.c:143:12
# | #35 0x555e9271a2ea in __gthread_once /usr/lib/gcc/x86_64-linux-gnu/14/../../../../include/x86_64-linux-gnu/c++/14/bits/gthr-default.h:713:12
# | #36 0x555e9271a2ea in call_once<void (std::__future_base::_State_baseV2::*)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()> *, bool *), std::__future_base::_State_baseV2 *, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()> *, bool *> /usr/lib/gcc/x86_64-linux-gnu/14/../../../../include/c++/14/mutex:916:21
# | #37 0x555e9271a2ea in _M_set_result /usr/lib/gcc/x86_64-linux-gnu/14/../../../../include/c++/14/future:435:2
# | #38 0x555e9271a2ea in std::__future_base::_Deferred_state<std::thread::_Invoker<std::tuple<llvm::unique_function<void ()>>>, void>::_M_complete_async() /usr/lib/gcc/x86_64-linux-gnu/14/../../../../include/c++/14/future:1712:9
# | #39 0x555e9271a4ea in wait /usr/lib/gcc/x86_64-linux-gnu/14/../../../../include/c++/14/future:357:2
# | #40 0x555e9271a4ea in wait /usr/lib/gcc/x86_64-linux-gnu/14/../../../../include/c++/14/future:723:19
# | #41 0x555e9271a4ea in operator() /home/src/llvm-project/llvm/include/llvm/Support/ThreadPool.h:116:38
# | #42 0x555e9271a4ea in void llvm::detail::UniqueFunctionBase<void>::CallImpl<std::shared_future<void> llvm::ThreadPoolInterface::asyncImpl<void>(llvm::unique_function<void ()>, llvm::ThreadPoolTaskGroup*)::'lambda'()>(void*) /home/src/llvm-project/llvm/include/llvm/ADT/FunctionExtras.h:212:12
# | #43 0x555e92e9a9de in operator() /home/src/llvm-project/llvm/include/llvm/ADT/FunctionExtras.h:364:12
# | #44 0x555e92e9a9de in llvm::StdThreadPool::processTasks(llvm::ThreadPoolTaskGroup*) /home/src/llvm-project/llvm/lib/Support/ThreadPool.cpp:119:5
# | #45 0x555e92e9fee9 in operator() /home/src/llvm-project/llvm/lib/Support/ThreadPool.cpp:62:9
# | #46 0x555e92e9fee9 in operator()<(lambda at /home/src/llvm-project/llvm/lib/Support/ThreadPool.cpp:51:26) &> /home/src/llvm-project/llvm/include/llvm/Support/thread.h:46:11
# | #47 0x555e92e9fee9 in __invoke_impl<void, (lambda at /home/src/llvm-project/llvm/include/llvm/Support/thread.h:45:9), (lambda at /home/src/llvm-project/llvm/lib/Support/ThreadPool.cpp:51:26) &> /usr/lib/gcc/x86_64-linux-gnu/14/../../../../include/c++/14/bits/invoke.h:61:14
# | #48 0x555e92e9fee9 in __invoke<(lambda at /home/src/llvm-project/llvm/include/llvm/Support/thread.h:45:9), (lambda at /home/src/llvm-project/llvm/lib/Support/ThreadPool.cpp:51:26) &> /usr/lib/gcc/x86_64-linux-gnu/14/../../../../include/c++/14/bits/invoke.h:96:14
# | #49 0x555e92e9fee9 in __apply_impl<(lambda at /home/src/llvm-project/llvm/include/llvm/Support/thread.h:45:9), std::tuple<(lambda at /home/src/llvm-project/llvm/lib/Support/ThreadPool.cpp:51:26)> &, 0UL> /usr/lib/gcc/x86_64-linux-gnu/14/../../../../include/c++/14/tuple:2923:14
# | #50 0x555e92e9fee9 in apply<(lambda at /home/src/llvm-project/llvm/include/llvm/Support/thread.h:45:9), std::tuple<(lambda at /home/src/llvm-project/llvm/lib/Support/ThreadPool.cpp:51:26)> &> /usr/lib/gcc/x86_64-linux-gnu/14/../../../../include/c++/14/tuple:2938:14
# | #51 0x555e92e9fee9 in GenericThreadProxy<std::tuple<(lambda at /home/src/llvm-project/llvm/lib/Support/ThreadPool.cpp:51:26)> > /home/src/llvm-project/llvm/include/llvm/Support/thread.h:44:5
# | #52 0x555e92e9fee9 in void* llvm::thread::ThreadProxy<std::tuple<llvm::StdThreadPool::grow(int)::$_0>>(void*) /home/src/llvm-project/llvm/include/llvm/Support/thread.h:58:5
# | #53 0x555e80f97daa in asan_thread_start(void*) crtstuff.c
# | #54 0x7f7d0029cb7a in start_thread nptl/pthread_create.c:448:8
# | #55 0x7f7d0031a7b7 in __GI___clone3 misc/../sysdeps/unix/sysv/linux/x86_64/clone3.S:78
# |
# | 0x50700001c824 is located 36 bytes inside of 80-byte region [0x50700001c800,0x50700001c850)
# | freed by thread T2 here:
# | #0 0x555e80f9a1ba in free (/home/src/llvm-project/build/bin/mlir-opt+0x50db1ba) (BuildId: b9c8ccb9c8514b6c3e9430380af508cc313dfcb7)
# | #1 0x555e846c084f in (anonymous namespace)::wrapMultiBlockRegionWithSCFExecuteRegion(mlir::Region&, mlir::IRMapping&, mlir::Location, mlir::OpBuilder&) /home/src/llvm-project/mlir/lib/Dialect/OpenACC/Utils/OpenACCUtilsLoop.cpp
# | #2 0x555e846c0bc8 in mlir::acc::convertUnstructuredACCLoopToSCFExecuteRegion(mlir::acc::LoopOp, mlir::OpBuilder&) /home/src/llvm-project/mlir/lib/Dialect/OpenACC/Utils/OpenACCUtilsLoop.cpp:313:10
# | #3 0x555e82c5c26b in (anonymous namespace)::ACCOrphanLoopOpConversion::matchAndRewrite(mlir::acc::LoopOp, mlir::PatternRewriter&) const /home/src/llvm-project/mlir/lib/Dialect/OpenACC/Transforms/ACCSpecializeForHost.cpp:280:11
# | #4 0x555e9275444c in operator() /home/src/llvm-project/mlir/lib/Rewrite/PatternApplicator.cpp:223:31
# | #5 0x555e9275444c in void llvm::function_ref<void ()>::callback_fn<mlir::PatternApplicator::matchAndRewrite(mlir::Operation*, mlir::PatternRewriter&, llvm::function_ref<bool (mlir::Pattern const&)>, llvm::function_ref<void (mlir::Pattern const&)>, llvm::function_ref<llvm::LogicalResult (mlir::Pattern const&)>)::$_0>(long) /home/src/llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:46:12
# | #6 0x555e9274ce1d in operator() /home/src/llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:69:12
# | #7 0x555e9274ce1d in executeAction<mlir::ApplyPatternAction, const mlir::Pattern &> /home/src/llvm-project/mlir/include/mlir/IR/MLIRContext.h:290:7
# | #8 0x555e9274ce1d in mlir::PatternApplicator::matchAndRewrite(mlir::Operation*, mlir::PatternRewriter&, llvm::function_ref<bool (mlir::Pattern const&)>, llvm::function_ref<void (mlir::Pattern const&)>, llvm::function_ref<llvm::LogicalResult (mlir::Pattern const&)>) /home/src/llvm-project/mlir/lib/Rewrite/PatternApplicator.cpp:197:23
# | #9 0x555e92708f74 in (anonymous namespace)::GreedyPatternRewriteDriver::processWorklist() /home/src/llvm-project/mlir/lib/Transforms/Utils/GreedyPatternRewriteDriver.cpp:620:17
# | #10 0x555e927040f8 in operator() /home/src/llvm-project/mlir/lib/Transforms/Utils/GreedyPatternRewriteDriver.cpp:890:31
# | #11 0x555e927040f8 in callback_fn<(lambda at /home/src/llvm-project/mlir/lib/Transforms/Utils/GreedyPatternRewriteDriver.cpp:878:9)> /home/src/llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:46:12
# | #12 0x555e927040f8 in operator() /home/src/llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:69:12
# | #13 0x555e927040f8 in executeAction<(anonymous namespace)::GreedyPatternRewriteIteration, long &> /home/src/llvm-project/mlir/include/mlir/IR/MLIRContext.h:290:7
# | #14 0x555e927040f8 in simplify /home/src/llvm-project/mlir/lib/Transforms/Utils/GreedyPatternRewriteDriver.cpp:877:10
# | #15 0x555e927040f8 in mlir::applyPatternsGreedily(mlir::Region&, mlir::FrozenRewritePatternSet const&, mlir::GreedyRewriteConfig, bool*) /home/src/llvm-project/mlir/lib/Transforms/Utils/GreedyPatternRewriteDriver.cpp:935:47
# | #16 0x555e82c5b97d in applyPatternsGreedily /home/src/llvm-project/mlir/include/mlir/Transforms/GreedyPatternRewriteDriver.h:224:15
# | #17 0x555e82c5b97d in (anonymous namespace)::ACCSpecializeForHost::runOnOperation() /home/src/llvm-project/mlir/lib/Dialect/OpenACC/Transforms/ACCSpecializeForHost.cpp:347:18
# | #18 0x555e927ee0aa in operator() /home/src/llvm-project/mlir/lib/Pass/Pass.cpp:612:19
# | #19 0x555e927ee0aa in callback_fn<(lambda at /home/src/llvm-project/mlir/lib/Pass/Pass.cpp:607:9)> /home/src/llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:46:12
# | #20 0x555e927ee0aa in operator() /home/src/llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:69:12
# | #21 0x555e927ee0aa in executeAction<mlir::PassExecutionAction, mlir::Pass &> /home/src/llvm-project/mlir/include/mlir/IR/MLIRContext.h:290:7
# | #22 0x555e927ee0aa in mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) /home/src/llvm-project/mlir/lib/Pass/Pass.cpp:606:23
# | #23 0x555e927ef711 in mlir::detail::OpToOpPassAdaptor::runPipeline(mlir::OpPassManager&, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstrumentation::PipelineParentInfo const*) /home/src/llvm-project/mlir/lib/Pass/Pass.cpp:688:16
# | #24 0x555e92800a43 in operator() /home/src/llvm-project/mlir/lib/Pass/Pass.cpp:1001:36
# | #25 0x555e92800a43 in operator()<OpPMInfo &> /home/src/llvm-project/mlir/include/mlir/IR/Threading.h:120:12
# | #26 0x555e92800a43 in operator() /home/src/llvm-project/mlir/include/mlir/IR/Threading.h:62:18
# | #27 0x555e92800a43 in void llvm::detail::UniqueFunctionBase<void>::CallImpl<llvm::LogicalResult mlir::failableParallelForEach<__gnu_cxx::__normal_iterator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo*, std::vector<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo, std::allocator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo>>>, void mlir::parallelForEach<__gnu_cxx::__normal_iterator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo*, std::vector<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo, std::allocator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo>>>, mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::$_0>(mlir::MLIRContext*, __gnu_cxx::__normal_iterator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo*, std::vector<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo, std::allocator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo>>>, __gnu_cxx::__normal_iterator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo*, std::vector<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo, std::allocator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo>>>, mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::$_0&&)::'lambda'(__gnu_cxx::__normal_iterator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo*, std::vector<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo, std::allocator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo>>>&&)>(mlir::MLIRContext*, __gnu_cxx::__normal_iterator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo*, std::vector<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo, std::allocator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo>>>, __gnu_cxx::__normal_iterator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo*, std::vector<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo, std::allocator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo>>>, mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::$_0&&)::'lambda'()>(void*) /home/src/llvm-project/llvm/include/llvm/ADT/FunctionExtras.h:212:12
# | #28 0x555e927196e6 in operator() /home/src/llvm-project/llvm/include/llvm/ADT/FunctionExtras.h:364:12
# | #29 0x555e927196e6 in __invoke_impl<void, llvm::unique_function<void ()> > /usr/lib/gcc/x86_64-linux-gnu/14/../../../../include/c++/14/bits/invoke.h:61:14
# | #30 0x555e927196e6 in __invoke<llvm::unique_function<void ()> > /usr/lib/gcc/x86_64-linux-gnu/14/../../../../include/c++/14/bits/invoke.h:96:14
# | #31 0x555e927196e6 in _M_invoke<0UL> /usr/lib/gcc/x86_64-linux-gnu/14/../../../../include/c++/14/bits/std_thread.h:301:13
# | #32 0x555e927196e6 in operator() /usr/lib/gcc/x86_64-linux-gnu/14/../../../../include/c++/14/bits/std_thread.h:308:11
# | #33 0x555e927196e6 in operator() /usr/lib/gcc/x86_64-linux-gnu/14/../../../../include/c++/14/future:1439:6
# | #34 0x555e927196e6 in __invoke_impl<std::unique_ptr<std::__future_base::_Result<void>, std::__future_base::_Result_base::_Deleter>, std::__future_base::_Task_setter<std::unique_ptr<std::__future_base::_Result<void>, std::__future_base::_Result_base::_Deleter>, std::thread::_Invoker<std::tuple<llvm::unique_function<void ()> > >, void> &> /usr/lib/gcc/x86_64-linux-gnu/14/../../../../include/c++/14/bits/invoke.h:61:14
# | #35 0x555e927196e6 in __invoke_r<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter>, std::__future_base::_Task_setter<std::unique_ptr<std::__future_base::_Result<void>, std::__future_base::_Result_base::_Deleter>, std::thread::_Invoker<std::tuple<llvm::unique_function<void ()> > >, void> &> /usr/lib/gcc/x86_64-linux-gnu/14/../../../../include/c++/14/bits/invoke.h:114:9
# | #36 0x555e927196e6 in std::_Function_handler<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> (), std::__future_base::_Task_setter<std::unique_ptr<std::__future_base::_Result<void>, std::__future_base::_Result_base::_Deleter>, std::thread::_Invoker<std::tuple<llvm::unique_function<void ()>>>, void>>::_M_invoke(std::_Any_data const&) /usr/lib/gcc/x86_64-linux-gnu/14/../../../../include/c++/14/bits/std_function.h:290:9
# | #37 0x555e8cf2f04e in operator() /usr/lib/gcc/x86_64-linux-gnu/14/../../../../include/c++/14/bits/std_function.h:591:9
# | #38 0x555e8cf2f04e in std::__future_base::_State_baseV2::_M_do_set(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*) /usr/lib/gcc/x86_64-linux-gnu/14/../../../../include/c++/14/future:596:27
# | #39 0x7f7d002a1bc6 in __pthread_once_slow nptl/pthread_once.c:116:7
# |
# | previously allocated by thread T2 here:
# | #0 0x555e80f9a453 in malloc (/home/src/llvm-project/build/bin/mlir-opt+0x50db453) (BuildId: b9c8ccb9c8514b6c3e9430380af508cc313dfcb7)
# | #1 0x555e92ea61cb in mlir::Operation::create(mlir::Location, mlir::OperationName, mlir::TypeRange, mlir::ValueRange, mlir::DictionaryAttr, mlir::OpaqueProperties, mlir::BlockRange, unsigned int) /home/src/llvm-project/mlir/lib/IR/Operation.cpp:114:46
# | #2 0x555e92eabd08 in mlir::Operation::clone(mlir::IRMapping&, mlir::Operation::CloneOptions) /home/src/llvm-project/mlir/lib/IR/Operation.cpp:731:17
# | #3 0x555e92ede2d6 in mlir::Region::cloneInto(mlir::Region*, llvm::ilist_iterator<llvm::ilist_detail::node_options<mlir::Block, false, false, void, false, void>, false, false>, mlir::IRMapping&) /home/src/llvm-project/mlir/lib/IR/Region.cpp:127:32
# | #4 0x555e92cf230b in mlir::OpBuilder::cloneRegionBefore(mlir::Region&, mlir::Region&, llvm::ilist_iterator<llvm::ilist_detail::node_options<mlir::Block, false, false, void, false, void>, false, false>, mlir::IRMapping&) /home/src/llvm-project/mlir/lib/IR/Builders.cpp:591:10
# | #5 0x555e846c0675 in (anonymous namespace)::wrapMultiBlockRegionWithSCFExecuteRegion(mlir::Region&, mlir::IRMapping&, mlir::Location, mlir::OpBuilder&) /home/src/llvm-project/mlir/lib/Dialect/OpenACC/Utils/OpenACCUtilsLoop.cpp:153:5
# | #6 0x555e846c0bc8 in mlir::acc::convertUnstructuredACCLoopToSCFExecuteRegion(mlir::acc::LoopOp, mlir::OpBuilder&) /home/src/llvm-project/mlir/lib/Dialect/OpenACC/Utils/OpenACCUtilsLoop.cpp:313:10
# | #7 0x555e82c5c26b in (anonymous namespace)::ACCOrphanLoopOpConversion::matchAndRewrite(mlir::acc::LoopOp, mlir::PatternRewriter&) const /home/src/llvm-project/mlir/lib/Dialect/OpenACC/Transforms/ACCSpecializeForHost.cpp:280:11
# | #8 0x555e9275444c in operator() /home/src/llvm-project/mlir/lib/Rewrite/PatternApplicator.cpp:223:31
# | #9 0x555e9275444c in void llvm::function_ref<void ()>::callback_fn<mlir::PatternApplicator::matchAndRewrite(mlir::Operation*, mlir::PatternRewriter&, llvm::function_ref<bool (mlir::Pattern const&)>, llvm::function_ref<void (mlir::Pattern const&)>, llvm::function_ref<llvm::LogicalResult (mlir::Pattern const&)>)::$_0>(long) /home/src/llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:46:12
# | #10 0x555e9274ce1d in operator() /home/src/llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:69:12
# | #11 0x555e9274ce1d in executeAction<mlir::ApplyPatternAction, const mlir::Pattern &> /home/src/llvm-project/mlir/include/mlir/IR/MLIRContext.h:290:7
# | #12 0x555e9274ce1d in mlir::PatternApplicator::matchAndRewrite(mlir::Operation*, mlir::PatternRewriter&, llvm::function_ref<bool (mlir::Pattern const&)>, llvm::function_ref<void (mlir::Pattern const&)>, llvm::function_ref<llvm::LogicalResult (mlir::Pattern const&)>) /home/src/llvm-project/mlir/lib/Rewrite/PatternApplicator.cpp:197:23
# | #13 0x555e92708f74 in (anonymous namespace)::GreedyPatternRewriteDriver::processWorklist() /home/src/llvm-project/mlir/lib/Transforms/Utils/GreedyPatternRewriteDriver.cpp:620:17
# | #14 0x555e927040f8 in operator() /home/src/llvm-project/mlir/lib/Transforms/Utils/GreedyPatternRewriteDriver.cpp:890:31
# | #15 0x555e927040f8 in callback_fn<(lambda at /home/src/llvm-project/mlir/lib/Transforms/Utils/GreedyPatternRewriteDriver.cpp:878:9)> /home/src/llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:46:12
# | #16 0x555e927040f8 in operator() /home/src/llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:69:12
# | #17 0x555e927040f8 in executeAction<(anonymous namespace)::GreedyPatternRewriteIteration, long &> /home/src/llvm-project/mlir/include/mlir/IR/MLIRContext.h:290:7
# | #18 0x555e927040f8 in simplify /home/src/llvm-project/mlir/lib/Transforms/Utils/GreedyPatternRewriteDriver.cpp:877:10
# | #19 0x555e927040f8 in mlir::applyPatternsGreedily(mlir::Region&, mlir::FrozenRewritePatternSet const&, mlir::GreedyRewriteConfig, bool*) /home/src/llvm-project/mlir/lib/Transforms/Utils/GreedyPatternRewriteDriver.cpp:935:47
# | #20 0x555e82c5b97d in applyPatternsGreedily /home/src/llvm-project/mlir/include/mlir/Transforms/GreedyPatternRewriteDriver.h:224:15
# | #21 0x555e82c5b97d in (anonymous namespace)::ACCSpecializeForHost::runOnOperation() /home/src/llvm-project/mlir/lib/Dialect/OpenACC/Transforms/ACCSpecializeForHost.cpp:347:18
# | #22 0x555e927ee0aa in operator() /home/src/llvm-project/mlir/lib/Pass/Pass.cpp:612:19
# | #23 0x555e927ee0aa in callback_fn<(lambda at /home/src/llvm-project/mlir/lib/Pass/Pass.cpp:607:9)> /home/src/llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:46:12
# | #24 0x555e927ee0aa in operator() /home/src/llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:69:12
# | #25 0x555e927ee0aa in executeAction<mlir::PassExecutionAction, mlir::Pass &> /home/src/llvm-project/mlir/include/mlir/IR/MLIRContext.h:290:7
# | #26 0x555e927ee0aa in mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) /home/src/llvm-project/mlir/lib/Pass/Pass.cpp:606:23
# | #27 0x555e927ef711 in mlir::detail::OpToOpPassAdaptor::runPipeline(mlir::OpPassManager&, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstrumentation::PipelineParentInfo const*) /home/src/llvm-project/mlir/lib/Pass/Pass.cpp:688:16
# | #28 0x555e92800a43 in operator() /home/src/llvm-project/mlir/lib/Pass/Pass.cpp:1001:36
# | #29 0x555e92800a43 in operator()<OpPMInfo &> /home/src/llvm-project/mlir/include/mlir/IR/Threading.h:120:12
# | #30 0x555e92800a43 in operator() /home/src/llvm-project/mlir/include/mlir/IR/Threading.h:62:18
# | #31 0x555e92800a43 in void llvm::detail::UniqueFunctionBase<void>::CallImpl<llvm::LogicalResult mlir::failableParallelForEach<__gnu_cxx::__normal_iterator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo*, std::vector<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo, std::allocator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo>>>, void mlir::parallelForEach<__gnu_cxx::__normal_iterator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo*, std::vector<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo, std::allocator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo>>>, mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::$_0>(mlir::MLIRContext*, __gnu_cxx::__normal_iterator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo*, std::vector<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo, std::allocator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo>>>, __gnu_cxx::__normal_iterator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo*, std::vector<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo, std::allocator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo>>>, mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::$_0&&)::'lambda'(__gnu_cxx::__normal_iterator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo*, std::vector<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo, std::allocator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo>>>&&)>(mlir::MLIRContext*, __gnu_cxx::__normal_iterator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo*, std::vector<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo, std::allocator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo>>>, __gnu_cxx::__normal_iterator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo*, std::vector<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo, std::allocator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo>>>, mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::$_0&&)::'lambda'()>(void*) /home/src/llvm-project/llvm/include/llvm/ADT/FunctionExtras.h:212:12
# | #32 0x555e927196e6 in operator() /home/src/llvm-project/llvm/include/llvm/ADT/FunctionExtras.h:364:12
# | #33 0x555e927196e6 in __invoke_impl<void, llvm::unique_function<void ()> > /usr/lib/gcc/x86_64-linux-gnu/14/../../../../include/c++/14/bits/invoke.h:61:14
# | #34 0x555e927196e6 in __invoke<llvm::unique_function<void ()> > /usr/lib/gcc/x86_64-linux-gnu/14/../../../../include/c++/14/bits/invoke.h:96:14
# | #35 0x555e927196e6 in _M_invoke<0UL> /usr/lib/gcc/x86_64-linux-gnu/14/../../../../include/c++/14/bits/std_thread.h:301:13
# | #36 0x555e927196e6 in operator() /usr/lib/gcc/x86_64-linux-gnu/14/../../../../include/c++/14/bits/std_thread.h:308:11
# | #37 0x555e927196e6 in operator() /usr/lib/gcc/x86_64-linux-gnu/14/../../../../include/c++/14/future:1439:6
# | #38 0x555e927196e6 in __invoke_impl<std::unique_ptr<std::__future_base::_Result<void>, std::__future_base::_Result_base::_Deleter>, std::__future_base::_Task_setter<std::unique_ptr<std::__future_base::_Result<void>, std::__future_base::_Result_base::_Deleter>, std::thread::_Invoker<std::tuple<llvm::unique_function<void ()> > >, void> &> /usr/lib/gcc/x86_64-linux-gnu/14/../../../../include/c++/14/bits/invoke.h:61:14
# | #39 0x555e927196e6 in __invoke_r<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter>, std::__future_base::_Task_setter<std::unique_ptr<std::__future_base::_Result<void>, std::__future_base::_Result_base::_Deleter>, std::thread::_Invoker<std::tuple<llvm::unique_function<void ()> > >, void> &> /usr/lib/gcc/x86_64-linux-gnu/14/../../../../include/c++/14/bits/invoke.h:114:9
# | #40 0x555e927196e6 in std::_Function_handler<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> (), std::__future_base::_Task_setter<std::unique_ptr<std::__future_base::_Result<void>, std::__future_base::_Result_base::_Deleter>, std::thread::_Invoker<std::tuple<llvm::unique_function<void ()>>>, void>>::_M_invoke(std::_Any_data const&) /usr/lib/gcc/x86_64-linux-gnu/14/../../../../include/c++/14/bits/std_function.h:290:9
# | #41 0x555e8cf2f04e in operator() /usr/lib/gcc/x86_64-linux-gnu/14/../../../../include/c++/14/bits/std_function.h:591:9
# | #42 0x555e8cf2f04e in std::__future_base::_State_baseV2::_M_do_set(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*) /usr/lib/gcc/x86_64-linux-gnu/14/../../../../include/c++/14/future:596:27
# | #43 0x7f7d002a1bc6 in __pthread_once_slow nptl/pthread_once.c:116:7
# |
# | Thread T2 created by T0 here:
# | #0 0x555e80f7f965 in pthread_create (/home/src/llvm-project/build/bin/mlir-opt+0x50c0965) (BuildId: b9c8ccb9c8514b6c3e9430380af508cc313dfcb7)
# | #1 0x555e811b2b2f in llvm::llvm_execute_on_thread_impl(void* (*)(void*), void*, std::optional<unsigned int>) /home/src/llvm-project/llvm/lib/Support/Unix/Threading.inc:100:17
# | #2 0x555e92e99c7c in thread<(lambda at /home/src/llvm-project/llvm/lib/Support/ThreadPool.cpp:51:26) &> /home/src/llvm-project/llvm/include/llvm/Support/thread.h:134:12
# | #3 0x555e92e99c7c in thread<(lambda at /home/src/llvm-project/llvm/lib/Support/ThreadPool.cpp:51:26)> /home/src/llvm-project/llvm/include/llvm/Support/thread.h:81:9
# | #4 0x555e92e99c7c in construct<llvm::thread, (lambda at /home/src/llvm-project/llvm/lib/Support/ThreadPool.cpp:51:26)> /usr/lib/gcc/x86_64-linux-gnu/14/../../../../include/c++/14/bits/new_allocator.h:191:23
# | #5 0x555e92e99c7c in construct<llvm::thread, (lambda at /home/src/llvm-project/llvm/lib/Support/ThreadPool.cpp:51:26)> /usr/lib/gcc/x86_64-linux-gnu/14/../../../../include/c++/14/bits/alloc_traits.h:575:8
# | #6 0x555e92e99c7c in _M_realloc_append<(lambda at /home/src/llvm-project/llvm/lib/Support/ThreadPool.cpp:51:26)> /usr/lib/gcc/x86_64-linux-gnu/14/../../../../include/c++/14/bits/vector.tcc:634:2
# | #7 0x555e92e99c7c in emplace_back<(lambda at /home/src/llvm-project/llvm/lib/Support/ThreadPool.cpp:51:26)> /usr/lib/gcc/x86_64-linux-gnu/14/../../../../include/c++/14/bits/vector.tcc:123:4
# | #8 0x555e92e99c7c in llvm::StdThreadPool::grow(int) /home/src/llvm-project/llvm/lib/Support/ThreadPool.cpp:51:13
# | #9 0x555e92e9e7cc in llvm::StdThreadPool::asyncEnqueue(llvm::unique_function<void ()>, llvm::ThreadPoolTaskGroup*) /home/src/llvm-project/llvm/include/llvm/Support/ThreadPool.h:176:5
# | #10 0x555e927f3f7d in asyncImpl<void> /home/src/llvm-project/llvm/include/llvm/Support/ThreadPool.h:116:5
# | #11 0x555e927f3f7d in async<(lambda at /home/src/llvm-project/mlir/include/mlir/IR/Threading.h:56:20) &> /home/src/llvm-project/llvm/include/llvm/Support/ThreadPool.h:105:12
# | #12 0x555e927f3f7d in async<(lambda at /home/src/llvm-project/mlir/include/mlir/IR/Threading.h:56:20) &> /home/src/llvm-project/llvm/include/llvm/Support/ThreadPool.h:281:17
# | #13 0x555e927f3f7d in failableParallelForEach<__gnu_cxx::__normal_iterator<OpPMInfo *, std::vector<OpPMInfo, std::allocator<OpPMInfo> > >, (lambda at /home/src/llvm-project/mlir/include/mlir/IR/Threading.h:119:54)> /home/src/llvm-project/mlir/include/mlir/IR/Threading.h:73:16
# | #14 0x555e927f3f7d in parallelForEach<__gnu_cxx::__normal_iterator<OpPMInfo *, std::vector<OpPMInfo, std::allocator<OpPMInfo> > >, (lambda at /home/src/llvm-project/mlir/lib/Pass/Pass.cpp:991:37)> /home/src/llvm-project/mlir/include/mlir/IR/Threading.h:119:9
# | #15 0x555e927f3f7d in parallelForEach<std::vector<OpPMInfo, std::allocator<OpPMInfo> > &, (lambda at /home/src/llvm-project/mlir/lib/Pass/Pass.cpp:991:37)> /home/src/llvm-project/mlir/include/mlir/IR/Threading.h:131:3
# | #16 0x555e927f3f7d in mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool) /home/src/llvm-project/mlir/lib/Pass/Pass.cpp:991:3
# | #17 0x555e927ee5e2 in runOnOperation /home/src/llvm-project/mlir/lib/Pass/Pass.cpp:849:5
# | #18 0x555e927ee5e2 in operator() /home/src/llvm-project/mlir/lib/Pass/Pass.cpp:610:22
# | #19 0x555e927ee5e2 in callback_fn<(lambda at /home/src/llvm-project/mlir/lib/Pass/Pass.cpp:607:9)> /home/src/llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:46:12
# | #20 0x555e927ee5e2 in operator() /home/src/llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:69:12
# | #21 0x555e927ee5e2 in executeAction<mlir::PassExecutionAction, mlir::Pass &> /home/src/llvm-project/mlir/include/mlir/IR/MLIRContext.h:290:7
# | #22 0x555e927ee5e2 in mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) /home/src/llvm-project/mlir/lib/Pass/Pass.cpp:606:23
# | #23 0x555e927f6fcc in runPipeline /home/src/llvm-project/mlir/lib/Pass/Pass.cpp:688:16
# | #24 0x555e927f6fcc in runPasses /home/src/llvm-project/mlir/lib/Pass/Pass.cpp:1123:10
# | #25 0x555e927f6fcc in mlir::PassManager::run(mlir::Operation*) /home/src/llvm-project/mlir/lib/Pass/Pass.cpp:1097:60
# | #26 0x555e811ddd2c in performActions(llvm::raw_ostream&, std::shared_ptr<llvm::SourceMgr> const&, mlir::MLIRContext*, mlir::MlirOptMainConfig const&) /home/src/llvm-project/mlir/lib/Tools/mlir-opt/MlirOptMain.cpp:591:17
# | #27 0x555e811dbd10 in processBuffer /home/src/llvm-project/mlir/lib/Tools/mlir-opt/MlirOptMain.cpp:673:12
# | #28 0x555e811dbd10 in operator() /home/src/llvm-project/mlir/lib/Tools/mlir-opt/MlirOptMain.cpp:771:12
# | #29 0x555e811dbd10 in llvm::LogicalResult llvm::function_ref<llvm::LogicalResult (std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::MemoryBufferRef const&, llvm::raw_ostream&)>::callback_fn<mlir::MlirOptMain(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, mlir::DialectRegistry&, mlir::MlirOptMainConfig const&)::$_0>(long, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::MemoryBufferRef const&, llvm::raw_ostream&) /home/src/llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:46:12
# | #30 0x555e92f45164 in operator() /home/src/llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:69:12
# | #31 0x555e92f45164 in mlir::splitAndProcessBuffer(std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::function_ref<llvm::LogicalResult (std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::MemoryBufferRef const&, llvm::raw_ostream&)>, llvm::raw_ostream&, llvm::StringRef, llvm::StringRef) /home/src/llvm-project/mlir/lib/Support/ToolUtilities.cpp:30:12
# | #32 0x555e811bc2d4 in mlir::MlirOptMain(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, mlir::DialectRegistry&, mlir::MlirOptMainConfig const&) /home/src/llvm-project/mlir/lib/Tools/mlir-opt/MlirOptMain.cpp:776:26
# | #33 0x555e811bcb63 in mlir::MlirOptMain(int, char**, llvm::StringRef, llvm::StringRef, mlir::DialectRegistry&) /home/src/llvm-project/mlir/lib/Tools/mlir-opt/MlirOptMain.cpp:822:14
# | #34 0x555e811bd1cd in mlir::MlirOptMain(int, char**, llvm::StringRef, mlir::DialectRegistry&) /home/src/llvm-project/mlir/lib/Tools/mlir-opt/MlirOptMain.cpp:838:10
# | #35 0x555e80fde4e4 in main /home/src/llvm-project/mlir/tools/mlir-opt/mlir-opt.cpp:347:33
# | #36 0x7f7d00233ca7 in __libc_start_call_main csu/../sysdeps/nptl/libc_start_call_main.h:58:16
# |
# | SUMMARY: AddressSanitizer: heap-use-after-free /home/src/llvm-project/mlir/include/mlir/IR/Operation.h:416:12 in getResults
# | Shadow bytes around the buggy address:
# | 0x50700001c580: fd fd fd fd fd fd fa fa fa fa fd fd fd fd fd fd
# | 0x50700001c600: fd fd fd fd fa fa fa fa 00 00 00 00 00 00 00 00
# | 0x50700001c680: 00 fa fa fa fa fa 00 00 00 00 00 00 00 00 00 fa
# | 0x50700001c700: fa fa fa fa 00 00 00 00 00 00 00 00 00 fa fa fa
# | 0x50700001c780: fa fa 00 00 00 00 00 00 00 00 00 fa fa fa fa fa
# | =>0x50700001c800: fd fd fd fd[fd]fd fd fd fd fd fa fa fa fa 00 00
# | 0x50700001c880: 00 00 00 00 00 00 00 00 fa fa fa fa fa fa fa fa
# | 0x50700001c900: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
# | 0x50700001c980: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
# | 0x50700001ca00: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
# | 0x50700001ca80: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa 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
# | ==431836==ABORTING
# `-----------------------------
# error: command failed with exit status: 1
# executed command: /home/src/llvm-project/build/bin/FileCheck /home/src/llvm-project/mlir/test/Dialect/OpenACC/acc-specialize-for-host.mlir
# .---command stderr------------
# | FileCheck error: '<stdin>' is empty.
# | FileCheck command line: /home/src/llvm-project/build/bin/FileCheck /home/src/llvm-project/mlir/test/Dialect/OpenACC/acc-specialize-for-host.mlir
# `-----------------------------
# error: command failed with exit status: 2
--
********************
Testing: 0.. 10.. 20.. 30.. 40.. 50.. 60.. 70.. 80.. 90..
********************
Failed Tests (1):
MLIR :: Dialect/OpenACC/acc-specialize-for-host.mlir
Testing Time: 16.67s
Total Discovered Tests: 3787
Unsupported : 591 (15.61%)
Passed : 3194 (84.34%)
Expectedly Failed: 1 (0.03%)
Failed : 1 (0.03%)
FAILED: tools/mlir/test/CMakeFiles/check-mlir /home/src/llvm-project/build/tools/mlir/test/CMakeFiles/check-mlir
cd /home/src/llvm-project/build/tools/mlir/test && /usr/bin/python3 /home/src/llvm-project/build/./bin/llvm-lit -sv /home/src/llvm-project/build/tools/mlir/test
ninja: build stopped: subcommand failed.
```
</details>
https://github.com/llvm/llvm-project/pull/173407
More information about the Mlir-commits
mailing list