Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[MLIR]-test-ir-visitors triggers Assertion Failure `mayHaveSSADominance(region) && "graph regions are not allowed"' #128336

Open
xisang0 opened this issue Feb 22, 2025 · 1 comment
Labels
crash Prefer [crash-on-valid] or [crash-on-invalid] mlir

Comments

@xisang0
Copy link

xisang0 commented Feb 22, 2025

Test on commit: dca2ed3
steps to reproduce:

mlir-opt test.mlir -test-ir-visitors

test case:

module {
  func.func @parallel_matrix_mul(%A: tensor<?x?xf32>, %B: tensor<?x?xf32>, %dim: index,%tileSize: index) -> () {

    %out = tensor.empty(%dim, %dim) : tensor<?x?xf32>
    %result = scf.forall (%i, %j) = (0, 0) to (%dim, %dim)
        step (%tileSize, %tileSize) shared_outs(%o = %out) -> (tensor<?x?xf32>) {
    }
    return
  }
}

crash trace:

mlir-opt: /home/workdir/llvm-project-19/mlir/include/mlir/IR/Iterators.h:56: static auto mlir::ForwardDominanceIterator<true>::makeIterable(Region &) [NoGraphRegions = true]: Assertion `mayHaveSSADominance(region) && "graph regions are not allowed"' failed.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0.      Program arguments: ./mlir-opt /home/workdir/test.mlir -test-ir-visitors
 #0 0x000058d6fbf85258 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (./mlir-opt+0x10b5258)
 #1 0x000058d6fbf82d7e llvm::sys::RunSignalHandlers() (./mlir-opt+0x10b2d7e)
 #2 0x000058d6fbf85c68 SignalHandler(int) Signals.cpp:0:0
 #3 0x00007735d0705520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520)
 #4 0x00007735d07599fc pthread_kill (/lib/x86_64-linux-gnu/libc.so.6+0x969fc)
 #5 0x00007735d0705476 gsignal (/lib/x86_64-linux-gnu/libc.so.6+0x42476)
 #6 0x00007735d06eb7f3 abort (/lib/x86_64-linux-gnu/libc.so.6+0x287f3)
 #7 0x00007735d06eb71b (/lib/x86_64-linux-gnu/libc.so.6+0x2871b)
 #8 0x00007735d06fce96 (/lib/x86_64-linux-gnu/libc.so.6+0x39e96)
 #9 0x000058d6ff266e60 mlir::ForwardDominanceIterator<true>::makeIterable(mlir::Region&) (./mlir-opt+0x4396e60)
#10 0x000058d6ff266802 void mlir::detail::walk<mlir::ForwardDominanceIterator<true>>(mlir::Operation*, llvm::function_ref<void (mlir::Operation*)>, mlir::WalkOrder) (./mlir-opt+0x4396802)
#11 0x000058d6ff266ac2 void mlir::detail::walk<mlir::ForwardDominanceIterator<true>>(mlir::Operation*, llvm::function_ref<void (mlir::Operation*)>, mlir::WalkOrder) (./mlir-opt+0x4396ac2)
#12 0x000058d6ff266ac2 void mlir::detail::walk<mlir::ForwardDominanceIterator<true>>(mlir::Operation*, llvm::function_ref<void (mlir::Operation*)>, mlir::WalkOrder) (./mlir-opt+0x4396ac2)
#13 0x000058d6ff266439 void llvm::function_ref<void (mlir::Operation*)>::callback_fn<std::enable_if<!llvm::is_one_of<mlir::FunctionOpInterface, mlir::Operation*, mlir::Region*, mlir::Block*>::value && std::is_same<void, void>::value, void>::type mlir::detail::walk<(mlir::WalkOrder)1, mlir::ForwardIterator, testPureCallbacks(mlir::Operation*)::$_3, mlir::FunctionOpInterface, void>(mlir::Operation*, testPureCallbacks(mlir::Operation*)::$_3&&)::'lambda'(mlir::Operation*)>(long, mlir::Operation*) TestVisitors.cpp:0:0
#14 0x000058d6fc09904e void mlir::detail::walk<mlir::ForwardIterator>(mlir::Operation*, llvm::function_ref<void (mlir::Operation*)>, mlir::WalkOrder) (./mlir-opt+0x11c904e)
#15 0x000058d6ff265281 (anonymous namespace)::TestIRVisitorsPass::runOnOperation() TestVisitors.cpp:0:0
#16 0x000058d6ff37abcf mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) (./mlir-opt+0x44aabcf)
#17 0x000058d6ff37b352 mlir::detail::OpToOpPassAdaptor::runPipeline(mlir::OpPassManager&, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstrumentation::PipelineParentInfo const*) (./mlir-opt+0x44ab352)
#18 0x000058d6ff37dade mlir::PassManager::run(mlir::Operation*) (./mlir-opt+0x44adade)
#19 0x000058d6ff37662b performActions(llvm::raw_ostream&, std::shared_ptr<llvm::SourceMgr> const&, mlir::MLIRContext*, mlir::MlirOptMainConfig const&) MlirOptMain.cpp:0:0
#20 0x000058d6ff376283 llvm::LogicalResult llvm::function_ref<llvm::LogicalResult (std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, 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::raw_ostream&) MlirOptMain.cpp:0:0
#21 0x000058d6ff41f9e5 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::raw_ostream&)>, llvm::raw_ostream&, llvm::StringRef, llvm::StringRef) (./mlir-opt+0x454f9e5)
#22 0x000058d6ff36fee2 mlir::MlirOptMain(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, mlir::DialectRegistry&, mlir::MlirOptMainConfig const&) (./mlir-opt+0x449fee2)
#23 0x000058d6ff370193 mlir::MlirOptMain(int, char**, llvm::StringRef, llvm::StringRef, mlir::DialectRegistry&) (./mlir-opt+0x44a0193)
#24 0x000058d6ff3703a2 mlir::MlirOptMain(int, char**, llvm::StringRef, mlir::DialectRegistry&) (./mlir-opt+0x44a03a2)
#25 0x000058d6fbf64477 main (./mlir-opt+0x1094477)
#26 0x00007735d06ecd90 (/lib/x86_64-linux-gnu/libc.so.6+0x29d90)
#27 0x00007735d06ece40 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x29e40)
#28 0x000058d6fbf63fe5 _start (./mlir-opt+0x1093fe5)
Aborted (core dumped)
@llvmbot llvmbot added the mlir label Feb 22, 2025
@llvmbot
Copy link
Member

llvmbot commented Feb 22, 2025

@llvm/issue-subscribers-mlir

Author: None (xisang0)

Test on commit: https://github.com/llvm/llvm-project/commit/dca2ed31278c444f839e3e04fde0c21b62451d4a steps to reproduce: ``` mlir-opt test.mlir -test-ir-visitors ``` test case: ``` module { func.func @parallel_matrix_mul(%A: tensor<?x?xf32>, %B: tensor<?x?xf32>, %dim: index,%tileSize: index) -> () {
%out = tensor.empty(%dim, %dim) : tensor&lt;?x?xf32&gt;
%result = scf.forall (%i, %j) = (0, 0) to (%dim, %dim)
    step (%tileSize, %tileSize) shared_outs(%o = %out) -&gt; (tensor&lt;?x?xf32&gt;) {
}
return

}
}

crash trace:

mlir-opt: /home/workdir/llvm-project-19/mlir/include/mlir/IR/Iterators.h:56: static auto mlir::ForwardDominanceIterator<true>::makeIterable(Region &) [NoGraphRegions = true]: Assertion `mayHaveSSADominance(region) && "graph regions are not allowed"' failed.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0. Program arguments: ./mlir-opt /home/workdir/test.mlir -test-ir-visitors
#0 0x000058d6fbf85258 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (./mlir-opt+0x10b5258)
#1 0x000058d6fbf82d7e llvm::sys::RunSignalHandlers() (./mlir-opt+0x10b2d7e)
#2 0x000058d6fbf85c68 SignalHandler(int) Signals.cpp:0:0
#3 0x00007735d0705520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520)
#4 0x00007735d07599fc pthread_kill (/lib/x86_64-linux-gnu/libc.so.6+0x969fc)
#5 0x00007735d0705476 gsignal (/lib/x86_64-linux-gnu/libc.so.6+0x42476)
#6 0x00007735d06eb7f3 abort (/lib/x86_64-linux-gnu/libc.so.6+0x287f3)
#7 0x00007735d06eb71b (/lib/x86_64-linux-gnu/libc.so.6+0x2871b)
#8 0x00007735d06fce96 (/lib/x86_64-linux-gnu/libc.so.6+0x39e96)
#9 0x000058d6ff266e60 mlir::ForwardDominanceIterator<true>::makeIterable(mlir::Region&) (./mlir-opt+0x4396e60)
#10 0x000058d6ff266802 void mlir::detail::walk<mlir::ForwardDominanceIterator<true>>(mlir::Operation*, llvm::function_ref<void (mlir::Operation*)>, mlir::WalkOrder) (./mlir-opt+0x4396802)
#11 0x000058d6ff266ac2 void mlir::detail::walk<mlir::ForwardDominanceIterator<true>>(mlir::Operation*, llvm::function_ref<void (mlir::Operation*)>, mlir::WalkOrder) (./mlir-opt+0x4396ac2)
#12 0x000058d6ff266ac2 void mlir::detail::walk<mlir::ForwardDominanceIterator<true>>(mlir::Operation*, llvm::function_ref<void (mlir::Operation*)>, mlir::WalkOrder) (./mlir-opt+0x4396ac2)
#13 0x000058d6ff266439 void llvm::function_ref<void (mlir::Operation*)>::callback_fn<std::enable_if<!llvm::is_one_of<mlir::FunctionOpInterface, mlir::Operation*, mlir::Region*, mlir::Block*>::value && std::is_same<void, void>::value, void>::type mlir::detail::walk<(mlir::WalkOrder)1, mlir::ForwardIterator, testPureCallbacks(mlir::Operation*)::$_3, mlir::FunctionOpInterface, void>(mlir::Operation*, testPureCallbacks(mlir::Operation*)::$_3&&)::'lambda'(mlir::Operation*)>(long, mlir::Operation*) TestVisitors.cpp:0:0
#14 0x000058d6fc09904e void mlir::detail::walk<mlir::ForwardIterator>(mlir::Operation*, llvm::function_ref<void (mlir::Operation*)>, mlir::WalkOrder) (./mlir-opt+0x11c904e)
#15 0x000058d6ff265281 (anonymous namespace)::TestIRVisitorsPass::runOnOperation() TestVisitors.cpp:0:0
#16 0x000058d6ff37abcf mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) (./mlir-opt+0x44aabcf)
#17 0x000058d6ff37b352 mlir::detail::OpToOpPassAdaptor::runPipeline(mlir::OpPassManager&, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstrumentation::PipelineParentInfo const*) (./mlir-opt+0x44ab352)
#18 0x000058d6ff37dade mlir::PassManager::run(mlir::Operation*) (./mlir-opt+0x44adade)
#19 0x000058d6ff37662b performActions(llvm::raw_ostream&, std::shared_ptr<llvm::SourceMgr> const&, mlir::MLIRContext*, mlir::MlirOptMainConfig const&) MlirOptMain.cpp:0:0
#20 0x000058d6ff376283 llvm::LogicalResult llvm::function_ref<llvm::LogicalResult (std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, 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::raw_ostream&) MlirOptMain.cpp:0:0
#21 0x000058d6ff41f9e5 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::raw_ostream&)>, llvm::raw_ostream&, llvm::StringRef, llvm::StringRef) (./mlir-opt+0x454f9e5)
#22 0x000058d6ff36fee2 mlir::MlirOptMain(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, mlir::DialectRegistry&, mlir::MlirOptMainConfig const&) (./mlir-opt+0x449fee2)
#23 0x000058d6ff370193 mlir::MlirOptMain(int, char**, llvm::StringRef, llvm::StringRef, mlir::DialectRegistry&) (./mlir-opt+0x44a0193)
#24 0x000058d6ff3703a2 mlir::MlirOptMain(int, char**, llvm::StringRef, mlir::DialectRegistry&) (./mlir-opt+0x44a03a2)
#25 0x000058d6fbf64477 main (./mlir-opt+0x1094477)
#26 0x00007735d06ecd90 (/lib/x86_64-linux-gnu/libc.so.6+0x29d90)
#27 0x00007735d06ece40 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x29e40)
#28 0x000058d6fbf63fe5 _start (./mlir-opt+0x1093fe5)
Aborted (core dumped)

</details>

@EugeneZelenko EugeneZelenko added the crash Prefer [crash-on-valid] or [crash-on-invalid] label Feb 22, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
crash Prefer [crash-on-valid] or [crash-on-invalid] mlir
Projects
None yet
Development

No branches or pull requests

3 participants