<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/84675>84675</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
LLVM doesn't support aggregate types in `getTypeLegalizationCost`
</td>
</tr>
<tr>
<th>Labels</th>
<td>
crash-on-valid,
llvm:analysis
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
dtcxzyw
</td>
</tr>
</table>
<pre>
Reproducer: https://godbolt.org/z/53ze61ve3
```
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"
define void @_ZNSt8__detail8_ScannerIcEC2EPKcS3_NSt15regex_constants18syntax_option_typeESt6locale(ptr %this, i1 %call2, { i64, i64 } %0) {
entry:
%cond = select i1 %call2, { i64, i64 } %0, { i64, i64 } zeroinitializer
%cond.elt1 = extractvalue { i64, i64 } %cond, 1
store i64 %cond.elt1, ptr %this, align 8
ret void
}
```
```
> opt -passes="print<cost-model>" -S test.ll
Printing analysis 'Cost Model Analysis' for function '_ZNSt8__detail8_ScannerIcEC2EPKcS3_NSt15regex_constants18syntax_option_typeESt6locale':
Unknown type!
UNREACHABLE executed at /home/dtcxzyw/WorkSpace/Projects/compilers/llvm-project/llvm/lib/CodeGen/ValueTypes.cpp:590!
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0. Program arguments: bin/opt -passes=print<cost-model> reduced.ll
#0 0x00007f6cb39e9300 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/home/dtcxzyw/WorkSpace/Projects/compilers/LLVM/llvm-build/bin/../lib/libLLVMSupport.so.19.0git+0x1e9300)
#1 0x00007f6cb39e670f llvm::sys::RunSignalHandlers() (/home/dtcxzyw/WorkSpace/Projects/compilers/LLVM/llvm-build/bin/../lib/libLLVMSupport.so.19.0git+0x1e670f)
#2 0x00007f6cb39e6865 SignalHandler(int) Signals.cpp:0:0
#3 0x00007f6cb3442520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520)
#4 0x00007f6cb34969fc __pthread_kill_implementation ./nptl/pthread_kill.c:44:76
#5 0x00007f6cb34969fc __pthread_kill_internal ./nptl/pthread_kill.c:78:10
#6 0x00007f6cb34969fc pthread_kill ./nptl/pthread_kill.c:89:10
#7 0x00007f6cb3442476 gsignal ./signal/../sysdeps/posix/raise.c:27:6
#8 0x00007f6cb34287f3 abort ./stdlib/abort.c:81:7
#9 0x00007f6cb3901e3e (/home/dtcxzyw/WorkSpace/Projects/compilers/LLVM/llvm-build/bin/../lib/libLLVMSupport.so.19.0git+0x101e3e)
#10 0x00007f6cb073f685 (/home/dtcxzyw/WorkSpace/Projects/compilers/LLVM/llvm-build/bin/../lib/../lib/libLLVMCodeGen.so.19.0git+0x73f685)
#11 0x00007f6cb073f75c llvm::EVT::getEVT(llvm::Type*, bool) (/home/dtcxzyw/WorkSpace/Projects/compilers/LLVM/llvm-build/bin/../lib/../lib/libLLVMCodeGen.so.19.0git+0x73f75c)
#12 0x00007f6cb2809fef llvm::BasicTTIImplBase<llvm::X86TTIImpl>::getTypeLegalizationCost(llvm::Type*) const (/home/dtcxzyw/WorkSpace/Projects/compilers/LLVM/llvm-build/bin/../lib/../lib/libLLVMX86CodeGen.so.19.0git+0x409fef)
#13 0x00007f6cb2815e35 llvm::BasicTTIImplBase<llvm::X86TTIImpl>::getCmpSelInstrCost(unsigned int, llvm::Type*, llvm::Type*, llvm::CmpInst::Predicate, llvm::TargetTransformInfo::TargetCostKind, llvm::Instruction const*) (/home/dtcxzyw/WorkSpace/Projects/compilers/LLVM/llvm-build/bin/../lib/../lib/libLLVMX86CodeGen.so.19.0git+0x415e35)
#14 0x00007f6cb28036ca llvm::TargetTransformInfoImplCRTPBase<llvm::X86TTIImpl>::getInstructionCost(llvm::User const*, llvm::ArrayRef<llvm::Value const*>, llvm::TargetTransformInfo::TargetCostKind) (/home/dtcxzyw/WorkSpace/Projects/compilers/LLVM/llvm-build/bin/../lib/../lib/libLLVMX86CodeGen.so.19.0git+0x4036ca)
#15 0x00007f6cae86cb75 llvm::TargetTransformInfo::getInstructionCost(llvm::User const*, llvm::ArrayRef<llvm::Value const*>, llvm::TargetTransformInfo::TargetCostKind) const (/home/dtcxzyw/WorkSpace/Projects/compilers/LLVM/llvm-build/bin/../lib/../lib/libLLVMAnalysis.so.19.0git+0x46cb75)
#16 0x00007f6cae5580c8 llvm::CostModelPrinterPass::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/home/dtcxzyw/WorkSpace/Projects/compilers/LLVM/llvm-build/bin/../lib/../lib/libLLVMAnalysis.so.19.0git+0x1580c8)
#17 0x00007f6cb0c6ed96 llvm::detail::PassModel<llvm::Function, llvm::CostModelPrinterPass, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/home/dtcxzyw/WorkSpace/Projects/compilers/LLVM/llvm-build/bin/../lib/../lib/libLLVMPasses.so.19.0git+0x6ed96)
#18 0x00007f6cae1188b1 llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/home/dtcxzyw/WorkSpace/Projects/compilers/LLVM/llvm-build/bin/../lib/../lib/libLLVMCore.so.19.0git+0x3188b1)
#19 0x00007f6cb24a5556 llvm::detail::PassModel<llvm::Function, llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/home/dtcxzyw/WorkSpace/Projects/compilers/LLVM/llvm-build/bin/../lib/../lib/libLLVMX86CodeGen.so.19.0git+0xa5556)
#20 0x00007f6cae1175ab llvm::ModuleToFunctionPassAdaptor::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/home/dtcxzyw/WorkSpace/Projects/compilers/LLVM/llvm-build/bin/../lib/../lib/libLLVMCore.so.19.0git+0x3175ab)
#21 0x00007f6cb24a6946 llvm::detail::PassModel<llvm::Module, llvm::ModuleToFunctionPassAdaptor, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/home/dtcxzyw/WorkSpace/Projects/compilers/LLVM/llvm-build/bin/../lib/../lib/libLLVMX86CodeGen.so.19.0git+0xa6946)
#22 0x00007f6cae115421 llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/home/dtcxzyw/WorkSpace/Projects/compilers/LLVM/llvm-build/bin/../lib/../lib/libLLVMCore.so.19.0git+0x315421)
#23 0x00007f6cb3d674c5 llvm::runPassPipeline(llvm::StringRef, llvm::Module&, llvm::TargetMachine*, llvm::TargetLibraryInfoImpl*, llvm::ToolOutputFile*, llvm::ToolOutputFile*, llvm::ToolOutputFile*, llvm::StringRef, llvm::ArrayRef<llvm::PassPlugin>, llvm::ArrayRef<std::function<void (llvm::PassBuilder&)>>, llvm::opt_tool::OutputKind, llvm::opt_tool::VerifierKind, bool, bool, bool, bool, bool, bool, bool) (/home/dtcxzyw/WorkSpace/Projects/compilers/LLVM/llvm-build/bin/../lib/libLLVMOptDriver.so.19.0git+0x234c5)
#24 0x00007f6cb3d72096 optMain (/home/dtcxzyw/WorkSpace/Projects/compilers/LLVM/llvm-build/bin/../lib/libLLVMOptDriver.so.19.0git+0x2e096)
#25 0x00007f6cb3429d90 __libc_start_call_main ./csu/../sysdeps/nptl/libc_start_call_main.h:58:16
#26 0x00007f6cb3429e40 call_init ./csu/../csu/libc-start.c:128:20
#27 0x00007f6cb3429e40 __libc_start_main ./csu/../csu/libc-start.c:379:5
#28 0x000055d247b26095 _start (bin/opt+0x1095)
Aborted (core dumped)
```
See also https://github.com/dtcxzyw/llvm-opt-benchmark/pull/355.
cc @goldsteinn
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsWt1zGykS_2vwCyUVw3w_-EGWrdvUxruuyJvbuhcVw7RGXBBMAZO18tdfwYw-RlZ8TvZ2k7vbVGIzfDTdv1_T0BBmrWgUwDVKb1B6e8U6t9Hmunb86dPut6tK17vrd9AaXXccDIpneONca1E8Q3SB6KLRdaWlm2rTILr4hOgijT9BFn2EGJFbRGYoI8Pf8OmYacDhmjkm2U53DqP4FiNKYbJF8QwmLc0JimcxDT_8ZzT-9KUsCT8m4lCIaIHiWUSLybogQ0mFqmw_PEsmS9-N0pEqzohWwl6NpyJbZcmkUx-U_k1NpFDd06RR3WFU_7OGtVCAP2pRY5SQ1T9-WrpitarBMSGL1ZIzpcC84XdzevfwI1_Gq5-WLkoNNPC04lpZx5SzUWF3yrGnlW6d0Grldi3cLV0mNWcSEC1aZzCiqdsIi-gci8h_cSYl9Z8ov8EeAd-SJRjl3oKUIFr6pl5RUM7sPFvhC4fxWtXBXAsSuHu11ItNn8BooYQTTIpPYM6mmYJ0UZgLnpxh3H1ksoPPTOEH-KpoL8Q6baDvcSLOdznDhUnRKFzsxxlwgZmBsPz2oiderozvsG4dnrTMWrAovkWUtkYoh-I519ZNtroGieI7RCmeLLED66ZS9qMffEehGswUkzsrLEY0n2vr8L0fhWdDNaI5XmuD153innjf7Q9yofzA_S-9S2PfA9EB5F9-enc3m_8wu3l7h-EJeOegxsxhRBcbvQVEF0MkQHTxd20-LFvGfe2D0f8E7iyiC663rZBgfFnKj9tJ27cNn_6XqBBdzHUNfwOF6OK9d4LHXQt2ytsWxbO0JAeNHt7ezZZ32HbVVjjMcNU12ECrjcNOnwcf4TZdNeV6ezLZWAVhbQdeNcxUjYXisqsBuw1gbpjd4IrxD94zYdpPv3SMf8B1t20PwJEpDn8ejG4M22Jmmm4Lynk9cCW8RWOXuegv2IAPofXBWTCiMcHkiRBC8nXGq7iEMiYEB0PiGYpndmf7QnCsoNqjCQQUx06G_bbS1hlgW0SzsKaUCzHAx7qvovHt2_f3eyirTsga0UVv6HR64FOKyvdbdq0nZ2r1NCqnpBEO0RvyFAVbEC2PxkZnxmY5WV8y9l2nlqJRTP7AVN1rVHwH9nh1R_bQc3uKLMUjzREtBi766r2_k_DvICgeCUoSmlIyWNurNmxKJ5uRb-BexyxoF4aMlEvGMsusXHO8WrVuY4DVqw9CypXYthK8J7MQhDwUqnUS0cVptylH8Szx-2yeHeWnr5GvHBjF5IuS87BJn6CRXZJ8OuxFcUV5Ji4_BzfJM9zYwEeQ1Bf3vmB3tobWO02rrXhCdGGYsBBkh2B6gkExFk2LfB1jVvlQFUS5uqcvVPXa-bNMfpRQjl2IRBDDN_bzoMPBlfyyHQUpksfrrEj_aCWf6ztsH-f69uqM9I3O9c1TfhJn7t4_9oUGnC-fxtLHsDfOfBCttJZ_QtT5EkPzlI8MHQUgWpByDacB9YZZwR8f37zZtvKGWUDx_Nj4a5ENTf4ss8fD2_8WGn-WCzHBn10uA1TicAT58-H5tcg-g1ASABghFI8RilKI09-H0HzbLkG-UdaZAZxOhQyq7rfdOb7oTf-mcr5tvcj9Zg-14MzB2cCQrjwapuxam-0btdanDV6bH0V_gj4OCop2_SEzEDaQ9z3RFlgZ0ZacOXaccfYyEp6m-bvHh1eyeALLMxf_xYI5weoUzZkxbPcO1qMZwmn2OMBnBl9F2_dFSsB8RMrpjs-gyHiVp6-x87uF-xsFsH0S-AzygOgI8mwEeZoWhBenUUNbFxLLkB6AeWB2OEKbTo1AXgyJ5pAgnEA8KHPPFGvAjJA-DPIYZ9_EQT-HVRSgGGE1OucRnkFdZieG9mn1EGCZtfd9WnbJ3HFkvoTxV0G4Dz__K9w8hHT3nJmA-4iYYuTEUVQUVXRiZSDjJQv_AjscCg2cQx0HKEdYj_IJmrA0Tf8Ti-AP4-gvbl_chQN_pwRTcraY8pRVJ5be67qT8Kj3VnniZjVrnTaXMesHfBFiw5DvbS14JEZQRWdrISuTL1sLe2zmrwT4KxD8nCv_N9Lyght76Efc0DM3ThP6mj3hEiP_f0Bf9n8P4Qjj8a1ineUJPz2vmy4474NoQQo1vlJeOiNU40_eF5z_GVj9yfqe8U2Qc57vhta3ojLM7Pap2vNeWsufO9d2biHkBSG_q_kz5lxMLwImsmuEer4_HftbV_d168P2Me_fAk9h9LJuPK9gel-5tOvp1q2c1kMk6q14nsePe70HI9YCzL5ff1f1pb__rBv1n1t3a8RHMOdOS-OEjxIeOr61rnNKygzr1t0zob65tkDGJ1t6dgdOy7okeLWSouIr65hxK86kXG298n4ebrvn18zDRfalQdMNimfp8Ih9mDU7nxUSgsMYoYQ7n6gveumTID1cQ_eP5ZQcheaXhI5MuWTFReFxXnq1j7L3CUCa1jTJK5qRMsW9VM_p4QVtuH8ujy4xq7RxEFYV1wbCsxzURw4uPeguATCT9sWnwqPzBJfQrZtUoPhmy8wHRBdtJz0lcZoOj4KcY5SQRsvaOhBK4av6Oq7LuGRXcB3lESF5GpXF1eaaQxnFZZzHaUmKPCnrrIgoTyAhRZ3Qan0lrimhCYkjEtE0joopUJIUPCqKOlmzrCpRQmDLhJx61abaNFfhCfO6SLI8vZKsAmnDf9agNLxgTrSafGRS1IhSROeI0iFqsMNjM0Xp7ZW5Hty_sSghUlhnj1M44SRce_fHtQarEM0dtv0LAWZNY6BhDsLTscV-KWbkc7fFGbnqjLz--ofaYOi_AgAA__8VMI8T">