<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/108158>108158</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[mlir][openmp] -convert-openmp-to-llvm crashes in /usr/lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/optional:438: _Tp &std::_Optional_base_impl<unsigned int, std::_Optional_base<unsigned int>>::_M_get() [_Tp = unsigned int, _Dp = std::_Optional_base<unsigned int>]: Assertion 'this->_M_is_engaged()' failed.
</td>
</tr>
<tr>
<th>Labels</th>
<td>
mlir
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
axeabc
</td>
</tr>
</table>
<pre>
git version: 761bf333e378b52614c
system: `Ubuntu 18.04.6 LTS`
reproduce with: `mlir-opt -convert-openmp-to-llvm a.mlir`
a.mlir:
```
#map = affine_map<(d0) -> (d0)>
module {
func.func @loop_nest_depth() {
%alloc = memref.alloca() :memref<256x8xf32, #spirv.storage_class<Generic>>
affine.for %arg0 = 0 to 32 step 4 {
affine.for %arg1 = 0 to 8 step 2 {
%0 = affine.apply #map(%arg1)
%1 = affine.load %alloc[%arg0, %0] : memref<256x8xf32, #spirv.storage_class<Generic>>
}
}
return
}
}
```
stack trace:
```
/usr/lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/optional:438: _Tp &std::_Optional_base_impl<unsigned int, std::_Optional_base<unsigned int>>::_M_get() [_Tp = unsigned int, _Dp = std::_Optional_base<unsigned int>]: Assertion 'this->_M_is_engaged()' failed.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0. Program arguments: /data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt -convert-openmp-to-llvm a.mlir
#0 0x000055afe49e0128 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x10d7128)
#1 0x000055afe49ddc3e llvm::sys::RunSignalHandlers() (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x10d4c3e)
#2 0x000055afe49e0abd SignalHandler(int) Signals.cpp:0:0
#3 0x00007fc2e912c420 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x14420)
#4 0x00007fc2e876900b raise /build/glibc-LcI20x/glibc-2.31/signal/../sysdeps/unix/sysv/linux/raise.c:51:1
#5 0x00007fc2e8748859 abort /build/glibc-LcI20x/glibc-2.31/stdlib/abort.c:81:7
#6 0x000055afe737e0ff (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x3a750ff)
#7 0x000055afe7391f70 mlir::AllocLikeOpLLVMLowering::matchAndRewrite(mlir::Operation*, llvm::ArrayRef<mlir::Value>, mlir::ConversionPatternRewriter&) const (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x3a88f70)
#8 0x000055afe7b30b11 mlir::ConversionPattern::matchAndRewrite(mlir::Operation*, mlir::PatternRewriter&) const (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x4227b11)
#9 0x000055afea4bbc91 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) PatternApplicator.cpp:0:0
#10 0x000055afea4b894b 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&)>) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x6baf94b)
#11 0x000055afe7b31b53 (anonymous namespace)::OperationLegalizer::legalize(mlir::Operation*, mlir::ConversionPatternRewriter&) DialectConversion.cpp:0:0
#12 0x000055afe7b30bb7 mlir::OperationConverter::convert(mlir::ConversionPatternRewriter&, mlir::Operation*) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x4227bb7)
#13 0x000055afe7b31d7f mlir::OperationConverter::convertOperations(llvm::ArrayRef<mlir::Operation*>) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x4228d7f)
#14 0x000055afe7b3996b mlir::applyPartialConversion(mlir::Operation*, mlir::ConversionTarget const&, mlir::FrozenRewritePatternSet const&, mlir::ConversionConfig) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x423096b)
#15 0x000055afe73cc395 (anonymous namespace)::ConvertOpenMPToLLVMPass::runOnOperation() OpenMPToLLVM.cpp:0:0
#16 0x000055afe7ad22d6 mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x41c92d6)
#17 0x000055afe7ad2c40 mlir::detail::OpToOpPassAdaptor::runPipeline(mlir::OpPassManager&, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstrumentation::PipelineParentInfo const*) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x41c9c40)
#18 0x000055afe7ad5282 mlir::PassManager::run(mlir::Operation*) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x41cc282)
#19 0x000055afe7acdab1 performActions(llvm::raw_ostream&, std::shared_ptr<llvm::SourceMgr> const&, mlir::MLIRContext*, mlir::MlirOptMainConfig const&) MlirOptMain.cpp:0:0
#20 0x000055afe7acd70b 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 0x000055afe7b7a3a5 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) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x42713a5)
#22 0x000055afe7ac8b35 mlir::MlirOptMain(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, mlir::DialectRegistry&, mlir::MlirOptMainConfig const&) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x41bfb35)
#23 0x000055afe7ac8ddf mlir::MlirOptMain(int, char**, llvm::StringRef, llvm::StringRef, mlir::DialectRegistry&) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x41bfddf)
#24 0x000055afe7ac910e mlir::MlirOptMain(int, char**, llvm::StringRef, mlir::DialectRegistry&) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x41c010e)
#25 0x000055afe49c0d67 main (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x10b7d67)
#26 0x00007fc2e874a083 __libc_start_main /build/glibc-LcI20x/glibc-2.31/csu/../csu/libc-start.c:342:3
#27 0x000055afe49c08ee _start (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x10b78ee)
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsWt1u2zgWfhrmhohBkfq9yIXj1LsFEjRounMrUBQlc4emtCSVJvP0C1KyLcl2k3bqDnYxQGtb4iHP-b7zwyMx1BhRK85vQHQLorsr2tlNo2_oC6cFuyqa8vWmFhY-c21EowBZwiQOiooQwkmSFhGOg5ABdAfQsv80r8byrRMEMfpX0SnbwSBdoHARw_svTyBGY2nNW92UHePwq7CbYdZWCn3dtBZes0Y9c22vm5arbXttm2spn7eQLpzIbKnhJhku3aj_B4drTLa0hYDcQVpVQvF8S1tAVgCnJQI4g9eAfIC7K0A-9NO2TdlJDkFy219DWHWKLdwHBCGSTdPmihubl7y1G4BTt9RIGkKAIyplw7zqLd9qXi38DbqTJsv-NiArHMUv6UtFMMArCDAxrdDPC2MbTWueM0mNAWT1D664FswZubPTaepxLapGe6W6Rl4ngraBBENjeQvDqXEnJgWHSWk_B8_neFBoxOWCtq18hT3HHpZfyRE5nxaMp8mGlnuCXAT2ZvfgIwSiO8cO_Dn0QAiSu5Ff9hea206r3cj-_uHHyYAylrLfodWU8UPQnQm9dWc0wGspCoDXNWMAr1_SOI_DaylU93Jdqw7gdQbwerE4_hCKya7kAK8ZwLf-n5dtWisaRSUgy5Ckjqj8SwsBjo0tnUlkmX8aRPKCGp6LbSsBWXXK53wJhbKOyDPic8mezl7wIa-53cVvdOv1kjs4Xzm_6--_X0N053AsjeHaCUKAE7sRxiVn_pALk3NV05qXvW6AE1hRIXm56Kl-vP-wfPoATVdshYUUFl0NNW8bbV08b6xtjTMEr50fhN10xYI1W-ca-bz7um5182_OrGPemI4bgNeQKmei9wO0Gw6ZpmYDC8p-9xEwqH_yMVF223YfEmgBUPaom1rTLaS67rZcWeMrHV6X1FKA1-aPV4DXD_cfP-9M0FxyR9CRRUUnZOm-hQJ4_d5K2Yc2wARB9IIQQlFEKx5mHAU4hR67d495Nf2PRy2U9Wi--ADH6UFI0695Y6zmdAtw7NzsvZ1B75OfhgngW_QSoDIJelfvMQRTDGXJCD-F4XOnnkStqPwnVaXk2uzi9SJmhozwiZl4TjUtSjgxCOB0YK6_bRasdYGD_P_9QmRYKKkY5lmAWYgRzHPNXd3jubYDor66nKgrUhSt3WhOy4VpFqi3OAwxmtgbjtWkSZwhVEBNheFwBL6WomDX9-wjRi_7S7wggePSo9hVLfNqSt665OmUeOlvPHtrVOcu_dILBsgyCgBZBgdLoqklYZpGGaRF45G-zxJb9mz4WV5J6pQkByXx2D0JSTiqqkuEBqFJhKpqQnUy1Z0FVYLgrnshy6XbDe_F7_xTe3__28N985Vroep-cEst2yxV-Zl_1cK6zDxM_NRyTV3ZBHjp8vKQFEut6etnv4cexH-jsuOu6OLVSPvKVxLX7T1Sa7lWgybtkz2DrFHGXoapNK2SaVCmE6YKgoog-Jat38_RYeQXww0xToogmMDNxnBpWBQsC-BzI8qRK13r6ezP-5bIjw674W57ZlRKtzXllZo4fEC4bFspGLWN_tl0rc7bWTSNhJOlhwV6hnu2h2B8E-yfWuQwcN_UglH5mZtO2vetm_XDAIc58jdS2ajaBcoRucfV3G1eaObiNAuLY1b_dtGfcNElsjUuaJWFxT5bnSuDWXEKiog43VQ16nXbdAYquuWm9Q1UNnPWPa-pFH_wAYwcLt_p2beK9J2gkjN7EDsdjPiovBYJPKG_X8fujB2azYmt37ZodWpVj-oi3vK1tUgm3iJzb5VJ9X6s-2Ez6YVP7qsTgBeLyBDjtEyqCcZwhjHL4nFx8U_pj1RbQeXBX98dcl-orrkd5d1YbK2bP_jO-UMoPJ2VPiy6alQl6otxRVAWT7M3mjZhjJEseit7V_tgUA-PXxrXnT36dw7-uahTn9SIP_-wMRY9nYPTRpSWGJfxiKGSWyrkzjlfmk-t07gsabvfHHSnZoXRmCP3nXfsUlH5aoR5oIrWLl9X0O0E7nv6PH8Z1wQsw2U8cU0yp4SF6LspeRQtl0LNK6oT3SP9ZmX6IY6m268xH5Wx2j_zN_rE_jwW6DX3A4Ptj1RzZT-qqtnlz8UqZsAyFqKJG9KZGyKc4pn1Oz5OxuGvKPQBYzjFE7OzqdmspEUAW66rRm-X7LiGH7_P2L-uMhuqeZm3Vk-akqem04w_1BqQD2cKmwO2apTlL_bI7Q9S6E-tfaBiqHrjFgaORk8WDIzm-BJUwHMd04-0WHv4nRL_6fgR_Ae-bfTrbVdVfSbs5Ute0U7avOSSW35-Tv8mcdIAzp3w9sPMiKf3uvPieA7WDQ3YZ14LY_XrcXx8KwbOPGP8SiTf8MzbETprjBNKaDTCblop7FKVj7ph3JiduX9J3P0PZsU3JcZjT1YLVbvu9NztCzVbSUBoNK7JGM9qVlqQ6HQ2_L_l8mV2vaIqyJRhMme4LKuzDA-tCtvQvilZfm_gvEXPxWCX5eSJB4cz2FmA-E-B_ZfgYyhAfIIvmp4iMFTGCdxSoS5zjFEkZTx5bMbx7GU8RSmBeS5FwXJjqbb5YM27Xswz0-3OB_qfftCv49_SkxC7z4P6ZI4_5Rz2ii_FQMpHLtgf5V6VN6TMSEav-E2Q4BiFKA7iq80NSXFIkzjJcMnKilaIpUkapVWcFClPYnolbjDCIcqCACUhIfGiqpIyiVGaFghHcZaBEPEtFXLh7Fw0ur7y5443AUqDKL2StODS-D_QwNiHJcYgurvSNx5X0dUGhEgKY81hBSus9H_U4SdEdyC67Y8GQXR39rTQH2pyA3t__n1m_U4NP3xmfdVpefPjh9JDfDzf4P8GAAD__xx4-_k">