<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/147218>147218</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
recent "cast<Ty>() argument of incompatible type!" failure in vector-combine
</td>
</tr>
<tr>
<th>Labels</th>
<td>
crash-on-valid,
llvm::vectorcombine
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
gregbedwell
</td>
</tr>
</table>
<pre>
Bisected to 777d6b5de90b7e0d1ceaa1424c6da4590539c007 (#146350)
Confirmed still present as of 01c97b4953e87ae455bd4c41e3de3f0f0f29c61c
https://godbolt.org/z/7qhKaavjs
https://godbolt.org/z/EdP1T5nxM
```
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-unknown"
define i64 @_Z2akv(<4 x i64> %call.i.i) {
entry:
%0 = bitcast <4 x i64> %call.i.i to <8 x i32>
%insert.i.i = shufflevector <8 x i32> %0, <8 x i32> zeroinitializer, <8 x i32> <i32 8, i32 9, i32 10, i32 11, i32 4, i32 5, i32 6, i32 7>
%bc3.i = bitcast <8 x i32> %insert.i.i to <4 x i64>
%1 = extractelement <4 x i64> zeroinitializer, i64 0
%2 = extractelement <4 x i64> %bc3.i, i64 1
%add.1.i.i = or i64 %2, %1
ret i64 %add.1.i.i
}
```
```
opt: /root/llvm-project/llvm/include/llvm/Support/Casting.h:578: decltype(auto) llvm::cast(From*) [with To = llvm::ExtractElementInst; From = llvm::Value]: Assertion `isa<To>(Val) && "cast<Ty>() argument of incompatible type!"' failed.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0. Program arguments: /opt/compiler-explorer/clang-assertions-trunk/bin/opt -o /app/output.s -S -passes=vector-combine <source>
1. Running pass "function(vector-combine)" on module "<source>"
2. Running pass "vector-combine" on function "_Z2akv"
#0 0x000000000560a898 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x560a898)
#1 0x0000000005607774 SignalHandler(int, siginfo_t*, void*) Signals.cpp:0:0
#2 0x000073ae71e42520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520)
#3 0x000073ae71e969fc pthread_kill (/lib/x86_64-linux-gnu/libc.so.6+0x969fc)
#4 0x000073ae71e42476 gsignal (/lib/x86_64-linux-gnu/libc.so.6+0x42476)
#5 0x000073ae71e287f3 abort (/lib/x86_64-linux-gnu/libc.so.6+0x287f3)
#6 0x000073ae71e2871b (/lib/x86_64-linux-gnu/libc.so.6+0x2871b)
#7 0x000073ae71e39e96 (/lib/x86_64-linux-gnu/libc.so.6+0x39e96)
#8 0x0000000003563e41 (anonymous namespace)::VectorCombine::foldExtractExtract(llvm::Instruction&) (.part.0) VectorCombine.cpp:0:0
#9 0x000000000357e963 (anonymous namespace)::VectorCombine::run()::'lambda'(llvm::Instruction&)::operator()(llvm::Instruction&) const (.isra.0) VectorCombine.cpp:0:0
#10 0x000000000357f65b llvm::VectorCombinePass::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x357f65b)
#11 0x0000000002d6387e llvm::detail::PassModel<llvm::Function, llvm::VectorCombinePass, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x2d6387e)
#12 0x0000000005402ba1 llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x5402ba1)
#13 0x0000000000ea794e llvm::detail::PassModel<llvm::Function, llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0xea794e)
#14 0x0000000005403074 llvm::ModuleToFunctionPassAdaptor::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x5403074)
#15 0x0000000000ea677e llvm::detail::PassModel<llvm::Module, llvm::ModuleToFunctionPassAdaptor, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0xea677e)
#16 0x0000000005400c41 llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x5400c41)
#17 0x0000000000961fda 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) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x961fda)
#18 0x000000000095576c optMain (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x95576c)
#19 0x000073ae71e29d90 (/lib/x86_64-linux-gnu/libc.so.6+0x29d90)
#20 0x000073ae71e29e40 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x29e40)
#21 0x000000000094d355 _start (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x94d355)
Program terminated with signal: SIGSEGV
Compiler returned: 139
```
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzcWV1v27gS_TXMC2GDIvX54AfFifcWu8ENNkEf7ktAiZTMDU3qklSa9NcvSEmR5bjdptsFFi3SmBI5Z2YOz4wshlorWsX5BiSXILm6oL3ba7NpDW8rzj5xKS8qzV42l8Ly2nEGnYZZlrG0ShgvUJVxxKKaUxrFOK5TRuOkQAkpaoQyCHAOMInilCQI4AKgcqtVI8yBM2idkBJ2hluuHKQW6gaiqC6yKi4SwvOM8jhJKhbXccQJ46RBDWpwUadRDVAJULl3rrOAlADvAN61mlVaurU2LcC7zwDvsv_vf6X06Q_7DWuv2W10n6jnmwEapGj8QaWjpuUOMuqopC-6dxCQKwgw5qsDICVfdThDgJQEh1_-Mlpe-lEah18r8TqIcA5IGeF81eRoHKlwK53M03h155dhPMfhjOgkn2J4ztOHNF716lHpT2r6HAwAKhlvhOJQpDEEMXr4H6aPT35TyDaGzzDEcg0BTmoq5VqsBcAFBNklQCVXzrx4wlAJ_QoUPFbC1dR6Br4A4OUByDb3kz6Fa28PcCKU5caFFR7H7vumkfyJ106bpUFwBvD25O5nbrRQwgkqxWdu3i4AZCsIhrmf8YNiGkTodRRNo3gaJNMgnQbZGLSPo6rJGPBR4stQjxIbUp95mVCigMCfnaG145IfvOCXDJ7Jzu8ZmiDwX0NM4U620cg8ZWwdvRKvzSAGnOBAIU7COmi4myZeDbyEsquTaji51J0DxPvZGa0dwDspnw6rzug_eD1dArwTqpY94_ONu77rtPErttQ6odr1HpAyybz-IeO1dC8dBzinvdNelMGMlICUfhsAzndGHwAug2CTy0_C7eG9DinOS68Hvq4Hvj4o6wC5hN7yZOFHKnsOkivvvLR-Q4VWEKRIWArI9l773cT5RyqDP5wCnPrqC7GQ7f3LMO8nqWn7sDu6gULV-tBRJyrJ4ZBQ5EsTZ7ChQnK2Bqi8_e26vLuGtq8OwkEKq76FhntyvKBO-pZw-75a1z71ickTwoW1PbcA7yBVDI68Q7fnsDbU7mFF60fPCve-7xytHyHrD91Q6WgNUHFrdGvo4TUTO26w32q88xkJyc2KP3dSG6_VXS2pald0Is6unOnVI8C7SqjBEK60h6Bd56971_VubeHqDq46b2YBuRp6warWh8q3LEC2Vvem5kMhRT6y33ulhGqht_H0N72qvUOA86W1f9ZgDLWCB8163y0xXgCG_ojPYZ4CBZTJkV8wNVE81BdBED2j6V-SIpoX-ZG07IsdBrdGKBcIv_f0A5zPiwz99KCtM5wegri2UCg3SC3_m8wDfImex7CGR7APOjoJOsuyGN6JVlH5H6qY9OB5iGELrWiFavSDC-W2hU9asLHyBgu7rjsvIBT-Dw7w6CAjlGcRj3GC0ZiNFBXAu_HBJYXqn1et6oeJem31Og0xB5M5YrIELNKiqWHn9oZT9vDov0q8Cz3Yz-jxabhxlsLWhvTeG3acpTNwsgTGedYQSCtf3e-CDYYzbPoGNqreDRhVM2C2BCQFL9L3AQaTGTA_VhhJUsLjyANSpdXLQfcWKnrgtgulUIxtONTediy9cKvRkk1tfPhYFI7v6aYfm0A6Vsy6o8atvXbgAvGMTItllBkvUvIdUZpeDe1_uAQ4k_RQMQpw9vVwh9u644Y6bUaMrydYa2WDeNbCGvrXafpqRydpNmlSHT_-js1vqbXHWc3Ldq_tNrSoeaJUVL5YYW-ooi03gGzPGPmum_7AnjamMSjOJ7noaZilJM_4UZCMOyrk2IuptTeacXk-1EVyb8n5rtz9z7-f1JG2mVS8eFDECFc0OgoyEPm1AH9irkY2Zq7IMVeI06yIf4QA_zGOf-K9GciftyY-kTFBWXwU4034lnivp3g85SWjne_JZ7MdDN6V62jyD6jQJzOnmpyoMM3e2Qan3LbfSNB3MPAlEf17aB14m1lNTwSE6vhb-uA5Ln8WikYWZo6yhfKKNGoYPQrR9EE2t6LjMrxaHWV154xQ7e-8OSe7N8neh5OwG1rvA055bvY3URlqXj6oRn84dPLtKq3lf8OL6E7IMyB_a_oL6ZTG0Bd_93h3Aieyb4V625Pn9dax8Qvxa8vc-hcxuKDRY132QjK_j8P3y7edXnfuwWk99oAhi1-FYl9b9ZEb0QhupnWVn3n35w-T3qCtWXn5UnlJkqU11J27oUL9MJ8BdfZZnLyCFax45xtuMHkFxOgUkMcIPjx4mwfrqHEPhzmdb3bB4yMX0ZKnmJEkgQP4D6MpgA4up5Mkx81BKOo4g-GgbnivBqSEdx9-ubv-5WP4w8DgEhrueqO4lzuMSHHm-DH8XLANYQUp6AXfRFkS5XGcEHSx37CUoJpR1FRNFFdZRNOsYFVNoogjmkb0QmwwwgnKUIoJzhO05hlPUFVXuIoTzhAHMeIHKuTaV8Nam_YiHKptojjDUX4hacWlDX8vwTgcqq20Wj1RKVg43NsCjOc6Gs6T5uMkkFxdmE04tKv61oIYSWGdnX054STfGF6HI97vPWMMB4y94VAouDzSuuiN3Hz_seJIwtMG_xkAAP__HNnk2g">