<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/62729>62729</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
llvm-mca crash on incorrect arguments
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
ryao
</td>
</tr>
</table>
<pre>
llvm-mca really should just terminate when given impossible to satisfy arguments:
```
echo | llvm-mca -mattr=+zvl256b --march=riscv64 --mcpu=sifive-u74
LLVM ERROR: zvl*b requires v or zve* extension to also be specified
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0. Program arguments: llvm-mca -mattr=+zvl256b --march=riscv64 --mcpu=sifive-u74
#0 0x00007f18e8f49b2e llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) /usr/src/debug/sys-devel/llvm-16.0.1/llvm/lib/Support/Unix/Signals.inc:567:22
#1 0x00007f18e8f46e7b llvm::sys::RunSignalHandlers() /usr/src/debug/sys-devel/llvm-16.0.1/llvm/lib/Support/Signals.cpp:104:20
#2 0x00007f18e8f46e7b SignalHandler /usr/src/debug/sys-devel/llvm-16.0.1/llvm/lib/Support/Unix/Signals.inc:402:31
#3 0x00007f18e7a27a40 (/lib64/libc.so.6+0x3ca40)
#4 0x00007f18e7a776cc __pthread_kill_implementation /usr/src/debug/sys-libs/glibc-2.37-r1/glibc-2.37/nptl/pthread_kill.c:44:76
#5 0x00007f18e7a27992 raise /usr/src/debug/sys-libs/glibc-2.37-r1/glibc-2.37/signal/../sysdeps/posix/raise.c:27:6
#6 0x00007f18e7a114b2 abort /usr/src/debug/sys-libs/glibc-2.37-r1/glibc-2.37/stdlib/abort.c:81:7
#7 0x00007f18e89d2028 std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>::_M_destroy(unsigned long) /usr/lib/gcc/x86_64-pc-linux-gnu/12/include/g++-v12/bits/basic_string.h:292:34
#8 0x00007f18e89d2028 std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>::_M_dispose() /usr/lib/gcc/x86_64-pc-linux-gnu/12/include/g++-v12/bits/basic_string.h:286:14
#9 0x00007f18e89d2028 std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>::~basic_string() /usr/lib/gcc/x86_64-pc-linux-gnu/12/include/g++-v12/bits/basic_string.h:795:19
#10 0x00007f18e89d2028 llvm::compression::zstd::decompress(llvm::ArrayRef<unsigned char>, llvm::SmallVectorImpl<unsigned char>&, unsigned long) /usr/src/debug/sys-devel/llvm-16.0.1/llvm/lib/Support/ErrorHandling.cpp:104:36
#11 0x00007f18e8e493c6 llvm::raw_string_ostream::raw_string_ostream(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>&) /usr/src/debug/sys-devel/llvm-16.0.1/llvm/include/llvm/Support/raw_ostream.h:655:3
#12 0x00007f18e8e493c6 llvm::report_fatal_error(llvm::Error, bool) /usr/src/debug/sys-devel/llvm-16.0.1/llvm/lib/Support/Error.cpp:149:40
#13 0x00007f18ece40511 llvm::RISCVABI::computeTargetABI(llvm::Triple const&, llvm::FeatureBitset, llvm::StringRef) /usr/src/debug/sys-devel/llvm-16.0.1/llvm/lib/Target/RISCV/MCTargetDesc/RISCVBaseInfo.cpp:72:1
#14 0x00007f18ece2375f RISCVAsmParser /usr/src/debug/sys-devel/llvm-16.0.1/llvm/lib/Target/RISCV/AsmParser/RISCVAsmParser.cpp:264:53
#15 0x00007f18ece2375f Allocator /usr/src/debug/sys-devel/llvm-16.0.1/llvm/include/llvm/MC/TargetRegistry.h:1407:12
#16 0x0000562560da897c llvm::Target::createMCAsmParser(llvm::MCSubtargetInfo const&, llvm::MCAsmParser&, llvm::MCInstrInfo const&, llvm::MCTargetOptions const&) const /usr/src/debug/sys-devel/llvm-16.0.1/llvm/include/llvm/MC/TargetRegistry.h:511:29
#17 0x0000562560da897c llvm::mca::AsmCodeRegionGenerator::parseCodeRegions(std::unique_ptr<llvm::MCInstPrinter, std::default_delete<llvm::MCInstPrinter>> const&) /usr/src/debug/sys-devel/llvm-16.0.1/llvm/tools/llvm-mca/CodeRegionGenerator.cpp:93:60
#18 0x0000562560d9e324 llvm::mca::AsmAnalysisRegionGenerator::parseAnalysisRegions(std::unique_ptr<llvm::MCInstPrinter, std::default_delete<llvm::MCInstPrinter>> const&) /usr/src/debug/sys-devel/llvm-16.0.1/llvm/tools/llvm-mca/CodeRegionGenerator.h:160:5
#19 0x0000562560d9b51a std::_Tuple_impl<0ul, llvm::ErrorInfoBase*, std::default_delete<llvm::ErrorInfoBase>>::_Tuple_impl(std::_Tuple_impl<0ul, llvm::ErrorInfoBase*, std::default_delete<llvm::ErrorInfoBase>>&&) /usr/lib/gcc/x86_64-pc-linux-gnu/12/include/g++-v12/tuple:301:7
#20 0x0000562560d9b51a std::tuple<llvm::ErrorInfoBase*, std::default_delete<llvm::ErrorInfoBase>>::tuple(std::tuple<llvm::ErrorInfoBase*, std::default_delete<llvm::ErrorInfoBase>>&&) /usr/lib/gcc/x86_64-pc-linux-gnu/12/include/g++-v12/tuple:1090:17
#21 0x0000562560d9b51a std::__uniq_ptr_impl<llvm::ErrorInfoBase, std::default_delete<llvm::ErrorInfoBase>>::__uniq_ptr_impl(std::__uniq_ptr_impl<llvm::ErrorInfoBase, std::default_delete<llvm::ErrorInfoBase>>&&) /usr/lib/gcc/x86_64-pc-linux-gnu/12/include/g++-v12/bits/unique_ptr.h:177:9
#22 0x0000562560d9b51a std::__uniq_ptr_data<llvm::ErrorInfoBase, std::default_delete<llvm::ErrorInfoBase>, true, true>::__uniq_ptr_data(std::__uniq_ptr_data<llvm::ErrorInfoBase, std::default_delete<llvm::ErrorInfoBase>, true, true>&&) /usr/lib/gcc/x86_64-pc-linux-gnu/12/include/g++-v12/bits/unique_ptr.h:234:7
#23 0x0000562560d9b51a std::unique_ptr<llvm::ErrorInfoBase, std::default_delete<llvm::ErrorInfoBase>>::unique_ptr(std::unique_ptr<llvm::ErrorInfoBase, std::default_delete<llvm::ErrorInfoBase>>&&) /usr/lib/gcc/x86_64-pc-linux-gnu/12/include/g++-v12/bits/unique_ptr.h:358:7
#24 0x0000562560d9b51a llvm::Expected<llvm::mca::AnalysisRegions const&>::takeError() /usr/src/debug/sys-devel/llvm-16.0.1/llvm/include/llvm/Support/Error.h:601:77
#25 0x0000562560d9b51a main /usr/src/debug/sys-devel/llvm-16.0.1/llvm/tools/llvm-mca/llvm-mca.cpp:442:48
#26 0x00007f18e7a128ca __libc_start_call_main /usr/src/debug/sys-libs/glibc-2.37-r1/glibc-2.37/csu/../sysdeps/nptl/libc_start_call_main.h:74:3
#27 0x00007f18e7a12985 call_init /usr/src/debug/sys-libs/glibc-2.37-r1/glibc-2.37/csu/../csu/libc-start.c:128:20
#28 0x00007f18e7a12985 __libc_start_main /usr/src/debug/sys-libs/glibc-2.37-r1/glibc-2.37/csu/../csu/libc-start.c:347:5
#29 0x0000562560d9dc21 (/usr/lib/llvm/16/bin/llvm-mca+0x18c21)
Aborted
```
This is from LLVM 16.0.1.
On a related note, it appears that llvm-mca does not support RISC-V's vector extension, since a valid entry gives:
```
$ llvm-mca -mattr=+zve64d,+zvl256b --march=riscv64 --mcpu=sifive-u74 << END
vle32.v v24, (a1)
vsetvli zero, zero, e32, m2, ta, ma
vwaddu.wv v8, v8, v24
vsetvli zero, zero, e64, m4, ta, ma
vadd.vv v12, v8, v12
vadd.vv v16, v12, v16
addi a1, a1, 32
vadd.vv v20, v16, v20
bltu a1, a2, .LBB0_1
END
error: found an unsupported instruction in the input assembly sequence.
note: instruction: vle32.v v24, (a1)
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzcWktz2zgS_jXwBSUV2XwffJBlazdV8U7KzuaqAsGWhAn4GABUrBz2t28BpETSkZ3M-FGz63KJIl799YfuRgMQ01psK8RLEl2R6PqCtWZXq0t1YPVFXheHSyn35azkjCpkUh6o3tWtLOjvrTbUoCpFxQzSbzus6FbssaKibGqtRS6RmppqZoTeHChT27bEymgSLIh3TbzjZ-z1_-4V-a6mJFnSk9hZyYxRJLgmcPV9LyGKczqblUzxHQmuldB8H4e2hDctCa612Ig9ztok7Ab8-PHLLb25u_vtjgQL-n0vCSxyqvCPVijUdE9rRb_vkcCC4oPBSou6sriZ1DXNkeoGudgILMagP328WdzfUN3mpTCU0bzdUoVNrYztujOmcWrCisBqK8yuzee8LgmsrFb9Y9ao-nfkhsBKaN2iJrCirCqoqLhsC6Rmh5Qrpnc0Z_yrUYzjvBN_bxj_Sou2bE5kenPq_j6peqtYOaH71bikBAKPeg-e53nJxk8x3YRZDugEWCjBQh909-WTEpVxQD9b5ATSoZFi39a1NgpZSSAmsKSiMgQySmDVakVgpRUnsCowb7f27aBnBe5RHqnz47k390d8ipzA6r5t7BQQWP27Eg-2QGwrJvVcVJwEiyhOSLAAGHTxH-kSY5Kf0-Wurbqh_smqQqLSBNLXhHvEyRs7ob4XWpzegBPO4ZwgelvmQg9IsAj8AVEwRpQwSFjoUceKHTEOuyef63oeE7jyHgLOQo9ANgwRTodIkphzul43ZqeQFeuvQsq1KBuJ1oyZsW75jJJS5NaBtlbqDOZBMlP-5J3AqmqM5WEsYe7Us3wn8QAteqxdlgFVTGh8KQTteCWwms-7XgU2tlNTa8e7E-JAgTXWEaZ4isn3wxwoy23IeSkmU3RW4EZzwlPfMjIITyYGmBXgQUq1KTr3WK_5w4Pvdy8504KvtVGi2pJgyXdMWQc_NbYFa6OYsKGpqw5uJi2YlDVnplajevvvRN2uC9RG1QcCaVu5paugsq62E3_s9NlyS8dDGq_jcNbwmRRV-zDbVi2BlQ827naR1jYlcEXgarZ35bkFB6uxKvOdnZPM-cEoGqZ_J2KEbmqNj2PTW3GRxjZWjbjI_i5c_Gcy_PvQkWSRpaOPb3Zt8c7RMSwuvC4bhdqmG13B95NuBR4rJ6vmQil2uMMNCZYnyx9RMzS8L5mUX5CbWn0oG3m2vVt1n3agF64iN0rVyi1Nlp_xshbEA0PT5RfDLOAxnWYJHcOnZOGpckjf2c4sf3-drsG4-oKBuVFq5OwqjqxdBQNp8BPSXBa63jDD5BrtNExs6KYrWdK8ruWrz_hxpsPMJQ0D6Em6wDH0It8fgb77cL_8srj6MHhGa_AzU1s0tnSswGclGomU15U2vRUPlStkplV4JYxG88gnnA1Y73mx0h0wAisHm8DqdtkVXaPmx-IrpvFDtal7ShK7cPgDIeGUEAiSaEM7GnT5iSn94pTuB5SngY9lp4IeI8TWQaORrUXnUC6OHvF65n-7PAG-w63QRh2c8fuhZ7MgHwZIxzQoiiGKvYKlWcJH09xr3dmRQmbwdjlSfGRIt8v7NjeuuZ2nJyxq0vuHug-VNurZ3h2e3xqbvupRq6z7_vYURi4UwmhdSp5nsOSsX250uawLtKPV1T-wQtWFQVvXWEaGWj0OwG0l_mhx3dh95vIxW25XiNMgXOCGtdKsC5Ro8JlOLvROSPyr9Jm6lvpYaTWG1Rlde7_IAhuHR9EsnTKYYQDhEwwuKiYPWuinWZy2-H9l0nlz7FmDHHjMHvGYRz4bJYyf20ai2wKSYOm1cupbbsGxvmcjLYHFrxIx7TfOoEfyxvnE-8GwMxG_ZrJqLHSbPnij_RyBALxnme-7PYn2FcjuRIxofluZb8as72XWqP0Rt_7zVr22Xm19-mhST2r8Unt-JGmSI78DiFfnvN96DVGxiyqJTRGG9Q3gV_kvmGFvoDosqVEtnp5n5sNJPj8f7wfqneYHgnAae4Jn5-eJNe91XWMk5OfL7f-aQwRROiU8PEf4COpDg9xgMcE_5DDT9GTIGU6RnH3Fflf5ojPxZ_bE3d7S7Ya7hWykXHROuZKJZw-L_2xGc_zaJ4RhaHdzYTqgeHw4CylndL2WIudrbZgya86kXP8M16-c1nLd_nh83J9sn5PXnU6Fk0MESB7jzdKIui6iEi8-UB5B7L66SofLnS77kI4uOCye9ByeCX-vTN1ZXEGYTBJUeJygFhz8_pZj7MC94fix88lqYjtX3oOfcvBPVx-LvFbmdJs4vfzsPj_vhKZC042qS-quLzsTnY8b_VZRRhVKZrCgVW1cZBKGsqZBpjQ1O2aGe7-iRm1bUd05lTtqmH0hkGi6dweFw-WnC3Gi4kgZ3TMpCoqVUQd3ufuTy1vS74PO3DViHBYEln_23pGSYEmCJb3513V_0LyXGMB8T_cQWqQEUjaQS_u_vUazl4J-R1XbVscnBmAfpfu0a_CSluw48DdWFO382_44Rmqr-08If1FA7FCV4RkBx66sKOb7PXUx_CTgeMbxY6v4WO8exxshVhTCtrPKL_vP4KkxwDt2drp402a5NO1oKCdo_vHqylv3B1Yn8rvzxGBBN3VbFZRVtK16i8KCikob1XJ3Uycqd30tqqY1lGmNZS4PVOMfLVana2xntsFi3NG-dtifm-aT2V0Ul0GRBRm7wEs_TkPwwEuji91lClEYefEmidIggw148SYDlnkZ84IEPbgQl-BB4EV-7PlRGEZzP03DKC0SBn4SQgok9LBkQs6tQc9rtb1wt_SXMSSQXUiWo9TuNxMAFX6jrpIAkOj6QnW_mcjbrSahJ4U2ehjFCCNx-FFFd8HvGOO1UsjNcHV_0Sp5-dd_TOCQ_jcAAP__mhk_Sw">