[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