<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/91078>91078</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
A/F: isa<To>(Val) && "cast<Ty>() argument of incompatible type!" after commit a4d1026
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
dyung
</td>
</tr>
</table>
<pre>
A few of our internal tests started hitting an assertion failure which I bisected back to commit a4d10266d20bfe5930dfed77e17832af341ed66e.
Consider the following code:
```c++
template <typename a> a b(a);
typedef float c __attribute__((__vector_size__(32)));
typedef float __attribute__((ext_vector_type(8))) d;
typedef float __attribute__((ext_vector_type(4))) e;
c f;
#define g(h) (b(h))
d i;
void j() {
c k = __builtin_ia32_rsqrtps256(f);
d l(k);
d m g(i);
volatile e n = __builtin_shufflevector(l, m, 15, 2, 0, 1);
}
```
When compiled with optimizations and `-mavx` it hits an assertion failure:
```
$ ~/src/upstream/a4d10266d20bfe5930dfed77e17832af341ed66e-linux/bin/clang -c -O2 -mavx repro2.cpp
clang: /home/dyung/src/upstream/llvm_clean_git/llvm/include/llvm/Support/Casting.h:578: decltype(auto) llvm::cast(From*) [with To = llvm::IntrinsicInst; 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, preprocessed source, and associated run script.
Stack dump:
0. Program arguments: /home/dyung/src/upstream/a4d10266d20bfe5930dfed77e17832af341ed66e-linux/bin/clang -c -O2 -mavx repro2.cpp
1. <eof> parser at end of file
2. Optimizer
#0 0x0000557d533cfe2f llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/home/dyung/src/upstream/a4d10266d20bfe5930dfed77e17832af341ed66e-linux/bin/clang+0x4055e2f)
#1 0x0000557d533cd96c llvm::sys::CleanupOnSignal(unsigned long) (/home/dyung/src/upstream/a4d10266d20bfe5930dfed77e17832af341ed66e-linux/bin/clang+0x405396c)
#2 0x0000557d5331a4e8 CrashRecoverySignalHandler(int) CrashRecoveryContext.cpp:0:0
#3 0x00007f0ccbb8b420 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x14420)
#4 0x00007f0ccb65800b raise /build/glibc-e2p3jK/glibc-2.31/signal/../sysdeps/unix/sysv/linux/raise.c:51:1
#5 0x00007f0ccb637859 abort /build/glibc-e2p3jK/glibc-2.31/stdlib/abort.c:81:7
#6 0x00007f0ccb637729 get_sysdep_segment_value /build/glibc-e2p3jK/glibc-2.31/intl/loadmsgcat.c:509:8
#7 0x00007f0ccb637729 _nl_load_domain /build/glibc-e2p3jK/glibc-2.31/intl/loadmsgcat.c:970:34
#8 0x00007f0ccb648fd6 (/lib/x86_64-linux-gnu/libc.so.6+0x33fd6)
#9 0x0000557d54cd0f88 (anonymous namespace)::VectorCombine::foldShuffleToIdentity(llvm::Instruction&)::'lambda3'(std::pair<llvm::Value*, int>)::operator()(std::pair<llvm::Value*, int>) const (.isra.0) VectorCombine.cpp:0:0
#10 0x0000557d54cdac11 (anonymous namespace)::VectorCombine::foldShuffleToIdentity(llvm::Instruction&) VectorCombine.cpp:0:0
#11 0x0000557d54ce56f1 (anonymous namespace)::VectorCombine::run()::'lambda'(llvm::Instruction&)::operator()(llvm::Instruction&) const (.isra.0) VectorCombine.cpp:0:0
#12 0x0000557d54ce695d llvm::VectorCombinePass::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/home/dyung/src/upstream/a4d10266d20bfe5930dfed77e17832af341ed66e-linux/bin/clang+0x596c95d)
#13 0x0000557d547ca386 llvm::detail::PassModel<llvm::Function, llvm::VectorCombinePass, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/home/dyung/src/upstream/a4d10266d20bfe5930dfed77e17832af341ed66e-linux/bin/clang+0x5450386)
#14 0x0000557d50a03b4c 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/dyung/src/upstream/a4d10266d20bfe5930dfed77e17832af341ed66e-linux/bin/clang+0x1689b4c)
#15 0x0000557d52d96d0d llvm::ModuleToFunctionPassAdaptor::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/home/dyung/src/upstream/a4d10266d20bfe5930dfed77e17832af341ed66e-linux/bin/clang+0x3a1cd0d)
#16 0x0000557d509e66d6 llvm::detail::PassModel<llvm::Module, llvm::ModuleToFunctionPassAdaptor, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/home/dyung/src/upstream/a4d10266d20bfe5930dfed77e17832af341ed66e-linux/bin/clang+0x166c6d6)
#17 0x0000557d52d94b9d llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/home/dyung/src/upstream/a4d10266d20bfe5930dfed77e17832af341ed66e-linux/bin/clang+0x3a1ab9d)
#18 0x0000557d5366aa28 (anonymous namespace)::EmitAssemblyHelper::RunOptimizationPipeline(clang::BackendAction, std::unique_ptr<llvm::raw_pwrite_stream, std::default_delete<llvm::raw_pwrite_stream>>&, std::unique_ptr<llvm::ToolOutputFile, std::default_delete<llvm::ToolOutputFile>>&, clang::BackendConsumer*) BackendUtil.cpp:0:0
#19 0x0000557d5366dd85 (anonymous namespace)::EmitAssemblyHelper::EmitAssembly(clang::BackendAction, std::unique_ptr<llvm::raw_pwrite_stream, std::default_delete<llvm::raw_pwrite_stream>>, clang::BackendConsumer*) BackendUtil.cpp:0:0
#20 0x0000557d5366e449 clang::EmitBackendOutput(clang::DiagnosticsEngine&, clang::HeaderSearchOptions const&, clang::CodeGenOptions const&, clang::TargetOptions const&, clang::LangOptions const&, llvm::StringRef, llvm::Module*, clang::BackendAction, llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem>, std::unique_ptr<llvm::raw_pwrite_stream, std::default_delete<llvm::raw_pwrite_stream>>, clang::BackendConsumer*) (/home/dyung/src/upstream/a4d10266d20bfe5930dfed77e17832af341ed66e-linux/bin/clang+0x42f4449)
#21 0x0000557d53cc97ca clang::BackendConsumer::HandleTranslationUnit(clang::ASTContext&) (/home/dyung/src/upstream/a4d10266d20bfe5930dfed77e17832af341ed66e-linux/bin/clang+0x494f7ca)
#22 0x0000557d55a3f65c clang::ParseAST(clang::Sema&, bool, bool) (/home/dyung/src/upstream/a4d10266d20bfe5930dfed77e17832af341ed66e-linux/bin/clang+0x66c565c)
#23 0x0000557d53cc8278 clang::CodeGenAction::ExecuteAction() (/home/dyung/src/upstream/a4d10266d20bfe5930dfed77e17832af341ed66e-linux/bin/clang+0x494e278)
#24 0x0000557d53f56729 clang::FrontendAction::Execute() (/home/dyung/src/upstream/a4d10266d20bfe5930dfed77e17832af341ed66e-linux/bin/clang+0x4bdc729)
#25 0x0000557d53edc48e clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/home/dyung/src/upstream/a4d10266d20bfe5930dfed77e17832af341ed66e-linux/bin/clang+0x4b6248e)
#26 0x0000557d54040e86 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/home/dyung/src/upstream/a4d10266d20bfe5930dfed77e17832af341ed66e-linux/bin/clang+0x4cc6e86)
#27 0x0000557d505e1bbc cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (/home/dyung/src/upstream/a4d10266d20bfe5930dfed77e17832af341ed66e-linux/bin/clang+0x1267bbc)
#28 0x0000557d505dacca ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&, llvm::ToolContext const&) driver.cpp:0:0
#29 0x0000557d53d0d8ed void llvm::function_ref<void ()>::callback_fn<clang::driver::CC1Command::Execute(llvm::ArrayRef<std::optional<llvm::StringRef>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*, bool*) const::'lambda'()>(long) Job.cpp:0:0
#30 0x0000557d5331a9f0 llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) (/home/dyung/src/upstream/a4d10266d20bfe5930dfed77e17832af341ed66e-linux/bin/clang+0x3fa09f0)
#31 0x0000557d53d0df0f clang::driver::CC1Command::Execute(llvm::ArrayRef<std::optional<llvm::StringRef>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*, bool*) const (.part.0) Job.cpp:0:0
#32 0x0000557d53cd2a4c clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, clang::driver::Command const*&, bool) const (/home/dyung/src/upstream/a4d10266d20bfe5930dfed77e17832af341ed66e-linux/bin/clang+0x4958a4c)
#33 0x0000557d53cd34dd clang::driver::Compilation::ExecuteJobs(clang::driver::JobList const&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&, bool) const (/home/dyung/src/upstream/a4d10266d20bfe5930dfed77e17832af341ed66e-linux/bin/clang+0x49594dd)
#34 0x0000557d53cdb8f5 clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&) (/home/dyung/src/upstream/a4d10266d20bfe5930dfed77e17832af341ed66e-linux/bin/clang+0x49618f5)
#35 0x0000557d505defab clang_main(int, char**, llvm::ToolContext const&) (/home/dyung/src/upstream/a4d10266d20bfe5930dfed77e17832af341ed66e-linux/bin/clang+0x1264fab)
#36 0x0000557d504db96b main (/home/dyung/src/upstream/a4d10266d20bfe5930dfed77e17832af341ed66e-linux/bin/clang+0x116196b)
#37 0x00007f0ccb639083 __libc_start_main /build/glibc-e2p3jK/glibc-2.31/csu/../csu/libc-start.c:342:3
#38 0x0000557d505da79e _start (/home/dyung/src/upstream/a4d10266d20bfe5930dfed77e17832af341ed66e-linux/bin/clang+0x126079e)
clang: error: clang frontend command failed with exit code 134 (use -v to see invocation)
clang version 19.0.0 (https://github.com/llvm/llvm-project.git a4d10266d20bfe5930dfed77e17832af341ed66e)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /home/dyung/src/upstream/a4d10266d20bfe5930dfed77e17832af341ed66e-linux/bin
Build config: +assertions
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzkWktz27iT_zTwBWUVCb4PPshytJPZmUoq9v-_RxYINCVMSIADgLI9h_3sWwApiZTlxMlMtLM7KUUWwQa6-9cPNB7UGLGRADcouUXJ3RXt7VbpG_7cy81VpfjzzRLX8IhVjVWvsZAWtKQNtmCswcZSbYHjrbBWyA2mElNjQFuhJK6paHoN-HEr2Ba_x5UwwBx1RdlnbBVmqm2FxTTmYUDSlJOgqiEpooDXwLMMwiyPCK2jOASeprDAKLhDwXL4XilpBAeN7RZwrZpGPToJmOKAopEGpcHwYYjcuo9vtdB2DbWAUbSyzx1I2gKmKHqHKa4QySkiBYr2xM8dcKhx3ShqMcNlSa3VouotlCUiOSJ5We6AWaVLI_4YGiPihhg-5wc6Mww82f1AjhaRPD-MgvmfGSc-jgOHcRiuD78RiTjUQgLeIJJvHSEieTX-dh9PxrE4dNkpwfFvnmOBUTa2YszwZ4yiO1yWVS8aK2QpaERKbX7XtjMkSRHJ6ykuGHPcIJJ_Pm1svTBi3rxTDbWiAQxYnvAx276uGxhURyRvEFnh1n2Fifsm7ivwz9MxUXZ34izD439tQToP7UQDHD8Ku8Wqs6IVf1Dn3QZTyTFKg-uW7p5QGmBhXRiYszHw0iP3wMf4vxFZG80QWfedsRpoi8j6rTFx3QjZPyGyroREZM0aKjf4muHrDwR7ybCGTiuyYF03ho-nQdESI7LeqhYQWftoPydG0-zakjVAZbkRdmxAZC0ka3oOx4b7vuuUdhQralwqWGxRtEyy3DHiwJrRFWlvlfMY3y1aomjJqLGI5GutWkSW3puSWw_3g_IWPpK-l1YLaQR7L41F0S12nU5o_k2bHlBy5_guD2ZAaSAMRdHqQaHoHSL5v2kzeHmKSIoRIV6MaPXwPLx3L6ne9C1I63KfkM4VqBVVA3jQJUSEIJJ5EwPfJ6ePv7xb3r_Dpq98asNVv3EmUNq6jLe1tjNOULJGZL0RdttXC6baI5Duz3Wn1W_AHJrCmB4MImvvbiPsPuUxTc3Wp1KrKQPn1523NQNjgGOjej00u57UGMUEddlX9xIbpkVnF4PI99blY9633cFNgwX-qNVG0_aAgnmjy_wIzx2EChfY_0PRClTt8nVHtQGNqcUguTNTLRoYiMkCfxjCFfSYPBCJAhw8BUEQJEnGkyhiNZB64jzm2Qw_PmohrcflYQA3PxJp-liqvbqpA1hIO6bMH4wPIrfBUxwkCZD6kJWdXuGJXrxI2Tm9Vi6U--6DvBcb6UIg76Wf_zlulBv_klpERcpmWpC5FiGNIccr5-efgKkd6OdB7J-o5A24HD8iP6NZKWnhyXq_iZaB_39gEY0ssjpgrKryKiYBLksNxioNpbaj_o2oEFk_5WmZxoMO1xvZDy86u9VA-cKoReB1CeOYBDNN4hmbNMmDoMKaCgMuhNyMxV38N6Ji10C66Lf_PDySRRQ6xEcDrRcL9_RsOHQuD_RSPA0NOy_NgK4fesFcyg1RtAyPkiRzSaIsTwpMK-U1fZsklg9o-F6eSe6YZEcm6SmTjBR4A7Yc5C4NbFwKKXcuOb-Vr5DW6d8oyluzYXRgnQSFE-DIOzvHu5RN6TqWXLVUyD_HssicE0XxkWc-5xnnNU_f4DjMuUzqXSaKap7OXKaYOn_MeFDnuRuTSiWfW9Ub7OpU0_l0VIyTna91VqqthIShqVYNvx8qoQf1noO0wj7P8pebPHXP3Lzo89c4FiJZQ9uK0wiRDJHcWD686KjQKFqdTrFurh5Sn5swx0FUB5oO5ZcvHL91FMyUND4GF8Jo6uKrwDMtX4a1S3_BCXiUheFlwHuLdOFcOkjS-nuk070ccZ0bbLDXVw38wjZf0uo77UBONE2LhE-Ls-kIH6kxU8WOZOteHmVZTfovJW2ejTC_Ukk3MPenQyfnSOkFZ7KkSFmR8EMwOxyiGQ4Zo1GeTvTgYKloxlKDGvOr4tCc12am_0v8vgse9_l_gHucBFGeznCPp7gHNIiqmP0FuHvaL-n-vWb4B5svTPOiitnMfMnUfIQXKQ-m6eNXxXuXmfcyO7MsOe1cUjuLyNDhm_AYu1wajYiGjAfzJJLOnLmANOXflkT26q_eiOF3gPSaL_7fQT5MU5byeRrJTvwwrgr-hnRwDu9_CowRDWlVzB04n63n0pRS8tWS9l0r7NIYaKvm-SdoOhhD-1MvP0y23z6KDhpXGZF8v5-FouUtZZ9B8uUhKR_Kz16K33soOzsHy63lu0ctLJR7KCadONS0b2zJoQELX-k4JvT0LWwflGo-9Lbr7VoMDvMWnie9pgxfYrBS0vStWyT7PbWx9V9WNOcrt-LEVpznyffaatr-tzPQXwAWCU7AgjgupsM6AMZBBoPNUbgTdCOVsYKZd3LjvfjUij8B5aDvgWq2dX6vpBlq8pekK8XhP0B-heqB6g3YrxD9QuXmHMkR1nurhdx8gvrcrDKu5r5k7_lmbm_EDj5BvZL244nhd_W4OHC-fv9sLLSj-f6WLnOpXTNSx3FcTLMsme_9MVZkjH5J4MG__Bbag6bSND6h_kuKEy9d3j-MW2mXnUniIq4zRmc6ztaVCY3qNGFTHT9SbWB5_zDX4B5aOnpwpVRz_HsxXdKUJWkyK3JJdGKvnGT5mXgeY2bIJ0_Aegv7MMovaw0gWT7TYLbKiuokzcgs_a2185tD2E9VuLDwFWcZmYfLbI0RAWdxDnP4_ZGffi-NpZLBeQu8ru1lY6VKSZzDTMHZsiEO4gDydDY5Daoc9dwpRl-q9QKHyyY6xlKYL-7JrCoPEgirimHGwrKlYl42L7Wmz26SilZsS_V-Llvus_msjazwTgl-Wf1CkmZVNU8M-Vw_ThmjeG-tVfjgU9dEy_uWNs2wJfS-7Zqzyp5M326MMalPJvgCcy12oM8XO_PKkAc8B-4Rm4xbj6vJUnvQ_dv9XuW4tGG0aSrKPpe1dJIeHW3gPTrdKlyptqWSn2aNs8Y9zOrKFy10vvw91iqHefzQoSzZ01MYDg8VNYK5OV84mTyKM2LXUFpNhTX71yfD0aZxQaT05L0jWR7nnOVhW_Xs9u0IFcn353A_q-qsPU7PMENa1MHEFOfOwg5LqHtaQzPf0f6y6S64gKxpUNTBNCJOjjV5wOugxv9k1_E78h3VdtiRf9VH5iepjBMas1eB84mevpiq92jOZoWTjo7gtcXEF0iXs6psottlKpokp_ONx-ikJuNRzPm34vWzqszrYP2sql-Esa8tq16k8tODM3_S_XZ8p5sD_1soFzGf7QdF8QnKVV4nr2l0N_k9q1jOlCqvWeeCKF-wHk_DvE5muCYnhQPUtBp02JdGe718elqOyeXrZcHliqG4ptVMp_nmd8yrIq3weJZ_GaHCNCzSuVCndw2KII9wWTaicnMA1bb8ltsGzPT7-x3DT__Sj-PvHUQxcd9H9i8KxKwAPDC-oKmCrDguOA6XCUFrfwoz-B2ux0WRv-PrYma4JTfco4QnYf1FXRxGsZO8N4Cvd9gqbACwmKxIpmzwDrQRSuKwWASLwHX8tvt0i8033DY-8B52zpxq462OXn6W6lFObncMdP5WEG6HY5gl7pQRT8Mrv4ZqGuB3Qv_Ia3Se2a1zPRfGtRived4e7qOak1uoV_wm4kVU0Cu4CbMwzuOsSLOr7U1NCYc6TIo4qBJaZ3VIoAAeBhlLCKPVlbghAYmDJIjDPCpItkjDOKNFFOcFhTSKAMUBtFQ0C2eBhdKbK3-X8aYIgyy_amgFjfGXzgmR8Ij9S0QISu6u9I23WtVvDIqDRhhrjqNYYRu4cRZfO-1-yLVOTGsL-uR--lWvm5vvv8Dp9f6fAAAA___BIFj0">