<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/62368>62368</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[MLIR]`spirv-unify-aliased-resource` pass crashes: Assertion `detail::isPresent(Val) && "dyn_cast on a non-existent value"' failed.
</td>
</tr>
<tr>
<th>Labels</th>
<td>
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
BealZephyr
</td>
</tr>
</table>
<pre>
Test commit: https://github.com/llvm/llvm-project/commit/da0730b908a43e490430717beda8486598667ab8
Steps to reproduce:
```
mlir-opt test.mlir -spirv-unify-aliased-resource
```
Test case:
```
spirv.module Logical GLSL450 requires #spirv.vce<v1.0, [Shader], []> {
spirv.func @main(%arg0: !spirv.ptr<!spirv.struct<(!spirv.array<1 x f32, stride=4> [0])>, StorageBuffer>) "None" {
%0 = spirv.Constant 0 : i32
%1 = spirv.AccessChain %arg0[%0, %0] : !spirv.ptr<!spirv.struct<(!spirv.array<1 x f32, stride=4> [0])>, StorageBuffer>, i32, i32
spirv.Return
}
}
```
Crash trace:
```
mlir-opt: /home/ty/llvm-project/llvm/include/llvm/Support/Casting.h:662: decltype(auto) llvm::dyn_cast(From*) [with To = mlir::spirv::GlobalVariableOp; From = mlir::Operation]: Assertion `detail::isPresent(Val) && "dyn_cast on a non-existent value"' failed.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0. Program arguments: /home/ty/llvm-project/build/bin/mlir-opt test.mlir -spirv-unify-aliased-resource
#0 0x0000561d27d1df2a llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/home/ty/llvm-project/build/bin/mlir-opt+0xd63f2a)
#1 0x0000561d27d1b09c SignalHandler(int) Signals.cpp:0:0
#2 0x00007fb02bfe3980 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x12980)
#3 0x00007fb02ac94e87 raise /build/glibc-CVJwZb/glibc-2.27/signal/../sysdeps/unix/sysv/linux/raise.c:51:0
#4 0x00007fb02ac967f1 abort /build/glibc-CVJwZb/glibc-2.27/stdlib/abort.c:81:0
#5 0x00007fb02ac863fa __assert_fail_base /build/glibc-CVJwZb/glibc-2.27/assert/assert.c:89:0
#6 0x00007fb02ac86472 (/lib/x86_64-linux-gnu/libc.so.6+0x30472)
#7 0x0000561d28ff9ace (anonymous namespace)::ResourceAliasAnalysis::shouldUnify(mlir::Operation*) const UnifyAliasedResourcePass.cpp:0:0
#8 0x0000561d28ff99aa (anonymous namespace)::ResourceAliasAnalysis::shouldUnify(mlir::Operation*) const UnifyAliasedResourcePass.cpp:0:0
#9 0x0000561d28ff9b12 std::_Function_handler<std::optional<bool> (mlir::Operation*), (anonymous namespace)::UnifyAliasedResourcePass::runOnOperation()::'lambda'(mlir::Operation*)>::_M_invoke(std::_Any_data const&, mlir::Operation*&&) UnifyAliasedResourcePass.cpp:0:0
#10 0x0000561d29c3dc83 mlir::ConversionTarget::isLegal(mlir::Operation*) const (/home/ty/llvm-project/build/bin/mlir-opt+0x2c83c83)
#11 0x0000561d29c3dda1 mlir::WalkResult llvm::function_ref<mlir::WalkResult (mlir::Operation*)>::callback_fn<(anonymous namespace)::OperationConverter::convertOperations(llvm::ArrayRef<mlir::Operation*>, llvm::function_ref<void (mlir::Diagnostic&)>)::'lambda'(mlir::Operation*)>(long, mlir::Operation*) DialectConversion.cpp:0:0
#12 0x0000561d29c46731 mlir::WalkResult mlir::detail::walk<mlir::ForwardDominanceIterator<false>>(mlir::Operation*, llvm::function_ref<mlir::WalkResult (mlir::Operation*)>, mlir::WalkOrder) (/home/ty/llvm-project/build/bin/mlir-opt+0x2c8c731)
#13 0x0000561d29c4694d mlir::WalkResult mlir::detail::walk<mlir::ForwardDominanceIterator<false>>(mlir::Operation*, llvm::function_ref<mlir::WalkResult (mlir::Operation*)>, mlir::WalkOrder) (/home/ty/llvm-project/build/bin/mlir-opt+0x2c8c94d)
#14 0x0000561d29c4ea54 (anonymous namespace)::OperationConverter::convertOperations(llvm::ArrayRef<mlir::Operation*>, llvm::function_ref<void (mlir::Diagnostic&)>) DialectConversion.cpp:0:0
#15 0x0000561d29c528a0 mlir::applyPartialConversion(mlir::Operation*, mlir::ConversionTarget&, mlir::FrozenRewritePatternSet const&, llvm::DenseSet<mlir::Operation*, llvm::DenseMapInfo<mlir::Operation*, void>>*) (/home/ty/llvm-project/build/bin/mlir-opt+0x2c988a0)
#16 0x0000561d28ffe488 (anonymous namespace)::UnifyAliasedResourcePass::runOnOperation() UnifyAliasedResourcePass.cpp:0:0
#17 0x0000561d29bc83ce mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) (/home/ty/llvm-project/build/bin/mlir-opt+0x2c0e3ce)
#18 0x0000561d29bc870a mlir::detail::OpToOpPassAdaptor::runPipeline(mlir::OpPassManager&, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstrumentation::PipelineParentInfo const*) (/home/ty/llvm-project/build/bin/mlir-opt+0x2c0e70a)
#19 0x0000561d29bc8af2 mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::'lambda'(mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo&)::operator()(mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo&) const Pass.cpp:0:0
#20 0x0000561d29bc7b15 mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool) (/home/ty/llvm-project/build/bin/mlir-opt+0x2c0db15)
#21 0x0000561d29bc8312 mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) (/home/ty/llvm-project/build/bin/mlir-opt+0x2c0e312)
#22 0x0000561d29bc9223 mlir::detail::OpToOpPassAdaptor::runPipeline(mlir::OpPassManager&, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstrumentation::PipelineParentInfo const*) (.constprop.510) Pass.cpp:0:0
#23 0x0000561d29bc98ad mlir::PassManager::run(mlir::Operation*) (/home/ty/llvm-project/build/bin/mlir-opt+0x2c0f8ad)
#24 0x0000561d29bbb7b0 performActions(llvm::raw_ostream&, std::shared_ptr<llvm::SourceMgr> const&, mlir::MLIRContext*, mlir::MlirOptMainConfig const&) MlirOptMain.cpp:0:0
#25 0x0000561d29bbbf55 processBuffer(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, mlir::MlirOptMainConfig const&, mlir::DialectRegistry&, llvm::ThreadPool*) MlirOptMain.cpp:0:0
#26 0x0000561d29bbc111 mlir::LogicalResult llvm::function_ref<mlir::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&)::'lambda'(std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&)>(long, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&) MlirOptMain.cpp:0:0
#27 0x0000561d29c9c290 mlir::splitAndProcessBuffer(std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::function_ref<mlir::LogicalResult (std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&)>, llvm::raw_ostream&, bool, bool) (/home/ty/llvm-project/build/bin/mlir-opt+0x2ce2290)
#28 0x0000561d29bb76f9 mlir::MlirOptMain(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, mlir::DialectRegistry&, mlir::MlirOptMainConfig const&) (/home/ty/llvm-project/build/bin/mlir-opt+0x2bfd6f9)
#29 0x0000561d29bbc43a mlir::MlirOptMain(int, char**, llvm::StringRef, mlir::DialectRegistry&) (/home/ty/llvm-project/build/bin/mlir-opt+0x2c0243a)
#30 0x0000561d27ce09cd main (/home/ty/llvm-project/build/bin/mlir-opt+0xd269cd)
#31 0x00007fb02ac77c87 __libc_start_main /build/glibc-CVJwZb/glibc-2.27/csu/../csu/libc-start.c:344:0
#32 0x0000561d27cf366a _start (/home/ty/llvm-project/build/bin/mlir-opt+0xd3966a)
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsWltT4zgW_jXiRUXKlnx94CEEMttbzUJBb2_VvKSOZTnRtiN5JJkm--u3JDshNiRAw870bE0VVCxbOpfvXHR0AWPEUnJ-huJzFF-cQGtXSp-dc6h_5c1qo08KVW7OvnBjMVPrtbCITvHK2sYgOkVkjsh8KeyqLSZMrRGZ1_X99ue00erfnFlE5v1QMi8hSGlQ5EEGEeVRHkQ0SMO04CVkUZbEeZYkKRQZCi5QML2zvDHYKqx5o1XZMu6Y-k8oCfo_31zXQp-qxmLLjZ24Fj41jdD3p60U1eYUagGGl6eaG9Vqxp8l0mkJ5iAXT3GyVmVbc_xZLQWDGv_y-e5zFAdY899aobnBiNCu472Td3YfTgJEZhjF53crKLlG8UXfdk_0EqP0vKOPcTewaiXDKArWICQiGSIx6GXgkEck7Lo0ViM62zWN1S2z_k22ewlawwbRWYgfcEWJY2qsFiVH9CLyjOPzwEuTI3rpPt9ZpWHJz9uq4tq_yzEi5B9KckTIvqAYIxIHGNGLXuaZksaCtNi9nGJByaBruNd1yhg3ZrYCIfFWt_jc0fO4uN_4Av8h6s684P3PTv6O_i23rZb9W5Re9C6yexj6ykyDWWGr4WWn7TSdr9SaIzK3m6fx00eVkKxuS_744q5tGqVdjxkYK-RyskJ0miTEkSw5q-2m4Yhk0FrlbOmH0Smi03IjFwyMRSSbaxe5U2_r-Py7sCv8RXlzOQG77h6B7vGXWhVQfwUtoKj5dYPoOXYkRiOuG67BCiW9k0_x1BiuXRujJCi5BVF3HYW50dxw6UT5CnXncgkiifO8rZhYSQxYKnnKH4SxXFp8D3XrvBKRFFcgal5OOlhvPl9O7y6xaYu1sBhw0S5dAlHaulTy5twljGm5QWSOQZa4NwG2K46ZN3EB7Js382SbtIB9w2W7bnZ2DyYoyG-0WmpYY9DLds2lNS-bvWhFXbpflwbmP5bjXDoKcPAQBEEQJ2FJ0jIsKwJ7vmA2pnu40UJaL_8X77cke-yk4ftCGas5rL15Zlg4kzljZT-iBSLnwUOZ0IqAC8idrOFI1iLIGb4TSwn130CWNdeIZD3r7rWZsMZhHfj_HSHSE0qrIiBFxWmeBXix0NxYpflC217yWhSIzB-yZJFEp7WQ7cPpUrbdh8auNIdyYpTL4efBQ0jyLBjIS_fZAMsjnqVYgzAc7-m-rEXBTmdf__7912LXJBOSIjI3XgtE5pOJa21MyRvnb60UD92Ley-NbF3Tk54wRKdxOFQ4GkmSpFWIoVBe09dJYssODT_KM8lGTOIhkyyhFeDFAnx0L1wcLgp4ve7duN1DxzIfskzGLKOUvMJ2zFkt8VajQZSSgdXSfS_LqioH5mTOQCq5WavWYAlrbhofBXkXAbd9XE1dnE0l1Bsj-sAxK9XW5T9dGCKSPZcEu_zK3CSJfb9pF61bojdgDvhxNhY1B_hJRc3HohYhwcaWHYfFvJXMcVis-kCms91H1bgvUCM6K5Sq_XR9RLyuUDiKwSHR-3TWymu5RzTbjUMkrWFdlICchx4RgV72el0thLxX31y-fFR2KjeLEix0QPYp8xCxxP_lb4DbZcpBWs8ZLVlG91jMlLzn2gglv4Becrudbj_zpUs3L9r-PYmdsIyyjO5izokbjsUtIdwT919Qf7vlpq3t3tRUbV1G8wrR2bO9X2UkBnXtZupFJbuy8Zjr7Ih0EFreE2ddc_fZDGbIqas_b0dyDuTpKsyD2t0rUQ61uRCwlMpYwToH6Uryt_spyWoll8c8MMcXAmrO7KPXPO90ZGjFKEnpASs-vtwv975D_W2A0Fzp76DLC7UWEiTjn6yTS7nsUEHtFmOXnQqHRD-C6A_5ywAlN-5au1XbO0sdwjKW0nAQEXSMZR6Vf2H5OizzqBxgGY2w5BBHL00RP3mcvzYk46HqMckg2IMdmqbe3IC2AupHUked4MgkMp7I5lr9h8tb_l0Ly2_AWq7lHbeDae8RiQsuDb9zc9Eh7J52v4Lmk6zU0SEO0q1zT9_vXnmWQTBwr2RU2vAoyz6-AnljATCoYvPCzbn8QKq4br6o68aRmpbQ-JTQCzFwBC_e2AcOe8e2tLwCCUsX1zPsqzcyw630O4vlRywTCQs47YDd6Z6NdU8DeLPuN6LhtZB8FAyu606lo4XbD4GxP8ix-iSN1X5PQOknVIcdOs7dh172G9BcWhch25j7gAAIeBrAAO98jDdU5M147zn81Gwk-7RuXCXawfRSXfNxLK6bmyufUvpk2y1A-qmyWwr8Hoz7OvtgfJNghHlahPEHY_5ePymLMN73ExI-yUnh2_3kz5KTQjLQnYx0zwmhf-WkQU6a-HajVTOJQzfFHnF_OoYzg3IkxVavZx1nvMJ5p7mrDAYlJxmWnEVRpEWAG64rpddT9rRwfLqFutsuMCvQvFx0xxyPI-58AXC11IheHthIuPr86XampOUP9omdrmqhrxt7BcJVuJVY7tHI8d7X5_GPx_pVcYwbrRg3pj8zeaV6rRS_tfyJeld8rfRmS2qvf8kraGu7KHnNLT88pq_4Xqvzfr--tr7lS2Gs3jypVL_4nd8bHyzTV8GVjOBiYbi_Mu7PC1-_xTEcsL-59D-H87BRD-2oPGuAn9A9njf7K0Pm2QLlp7HK4ybPTyHSywEzXL6wnJE8GJw51sJOZXkzyjh_hHZ_wiA92uOxDPiYOpATkg8WzGS0PivSpMqfj7P_tyzxPiiLqkyqfABlPp5YIgoHoeyrObaCrm4b7ajcWS3k8pZXLyv87oKJRHSwhhydQzMe5KzE6-4ayDsOkUmSs0FltjtE7o8M05RlKV4salGwhbGg7aLn-qpDSmba7els9-g_ejr-wJJG0SCxUTLUs6JJArhj_D5NaZ4ke5Bur5OclGe0zGkOJ_wsTDISpXka05PVGSQUgLCKZXlSkpiUPA2TkFRxHlEa5MmJOCMBoUFEkoCSPKSTPE3DqKA0oVDEKWMoCvgaRD1xUk6UXp74-xBnCaFJdlJDwWuzvTymz7wqRbs0KApqYax5HGaFrf01M1ewovgCJcHRywtJgBswprtkwc3vdYXkpNX12Y_fEfGw_DcAAP__Aw4e2g">