<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/127739>127739</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[Scalarizer] Test *_with_overflow crash with min-bits=32 and min-bits=16
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
farzonl
</td>
</tr>
</table>
<pre>
```
opt: include/llvm/Support/Casting.h:578: decltype(auto) llvm::cast(From *) [To = llvm::VectorType, From = llvm::Type]: 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 -passes=function(scalarizer<load-store;min-bits=16>,dce) -S
1. Running pass "function(scalarizer,dce)" on module "<stdin>"
2. Running pass "scalarizer" on function "call_v3i32"
#0 0x0000000004028908 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (opt+0x4028908)
#1 0x000000000402643e llvm::sys::RunSignalHandlers() (opt+0x402643e)
#2 0x0000000004029131 SignalHandler(int, siginfo_t*, void*) Signals.cpp:0:0
#3 0x000075c457a45330 (/lib/x86_64-linux-gnu/libc.so.6+0x45330)
#4 0x000075c457a9eb2c __pthread_kill_implementation ./nptl/pthread_kill.c:44:76
#5 0x000075c457a9eb2c __pthread_kill_internal ./nptl/pthread_kill.c:78:10
#6 0x000075c457a9eb2c pthread_kill ./nptl/pthread_kill.c:89:10
#7 0x000075c457a4527e raise ./signal/../sysdeps/posix/raise.c:27:6
#8 0x000075c457a288ff abort ./stdlib/abort.c:81:7
#9 0x000075c457a2881b _nl_load_domain ./intl/loadmsgcat.c:1177:9
#10 0x000075c457a3b517 (/lib/x86_64-linux-gnu/libc.so.6+0x3b517)
#11 0x0000000004143bea (opt+0x4143bea)
#12 0x00000000049addf4 (anonymous namespace)::Scatterer::operator[](unsigned int) Scalarizer.cpp:0:0
#13 0x00000000049aa142 (anonymous namespace)::ScalarizerVisitor::visit(llvm::Function&) Scalarizer.cpp:0:0
#14 0x00000000049a5419 llvm::ScalarizerPass::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (opt+0x49a5419)
```
No line numbers, Looks like we have some missing debug symbols I suspect the assert is coming from `ScalarizerVisitor::visitExtractValueInst`
There is a use of Scatterer::operator[] as part of creating the ExtractValue IR.
```cpp
for (unsigned OpIdx = 0; OpIdx < Op0.size(); ++OpIdx) {
Value *ResElem = Builder.CreateExtractValue(
Op0[OpIdx], Index, EVI.getName() + ".elem" + Twine(Index));
Res.push_back(ResElem);
}
```
We likely need to check `VS.NumPacked` before calling `Scatterer::operator[]`
Because that operator is using `Frag * VS.NumPacked` to create the exrtractElement instruction.
```cpp
CV[Frag] = Builder.CreateExtractElement(V, Frag * VS.NumPacked,
V->getName() + ".i" + Twine(Frag))
```
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJycV1tv6rzS_jXmZtQosYEkF1wALfoqvd9aVVt1XyInGcC7jh3ZTg_r12-Nk1Jg9e279kY9ENvzPOM5R3qv9gZxwWYrNrueyD4crFvspPtljZ5UtnlfsHk6_qTXLF3aLjCxBGVq3TfI-Ebrl5bxzUPfddYFxjdr6YMy--TAxHKWF3S6wVqH9w4ZL2QfLOMlRDGxZGJZSx8YLzbOtsD4kjbZbPVogYnrk2NPWAfrHiPKGobTZwfi1uya-JbeowvKGmDzVHnJxPrRMnHDePEkdWTgc8bnwDiP9GL9-D7s06Z0-75FE8Du6KK27WRQlUYY7pAxzhnPYSeVxiYZ7HL3183y4QZ8X7UqgISq34NDMgkEC4cQOk9q8g3jm70Kh75Katt-2o_-XXXO_htrMqLyvkfP-AakaT6sDeGAUDvpD1DJ-jk4WeNI_xBk_QxN33bEEpfShKXlnbN7J9vjlUgJsF2Aq056j56J611varIV44WvpZZO_ULHxFpb2Vz5YB0ysWqVuaoUiV9n82ipdVMjGevqYaDLiO6-N0aZPRA4Gfdr7A9ZxjlYA61teo10nIm1D40ykYAPuPwr3FOwiPFBNHhU6-2LUIIfQYBxkUL6ln58pikvyrQ4CR__7ocvd06ZEO35SAZmvPg85OTr1vrgULYxgtagTBjiqaDM4Kv0bYSm-x25swvu-VTgV9z3vXlQeyP1_0nTaHR-jMhzeJI-g-cX8GUmMjgDYryImq7Bq70yO7sNMdfW8GJVM6bdIOGTuqMoSuPvkUOMHPmsns5yOZ0JkUJUb6NVxfjmrZhv59MrrUz_drU3_bBRJ94m80FzEjnTe3qOWWLFa9huu3BwKJvts9J6q9pOI4WujP5NGN-YLmjGN6fHkpqJ5XTKxDKff-LP_gTfBHRG6m-RYxnLTqwx_wr5VOxbuKK8gMsvjctzBCeVx4jjo2MY3yTx6d032FFx6KxXb4xv4smIzHMmlicWKM6BeVHsdiArKksRKjSD8-LSoFtG9_1EKH9DyCrYGr2l-rBtbCvV4BVl4mVpufX7Wg5wWZaTSqPTKRXSc0BRzbL8vwukKHIMJMI8z69sKiqUZ0kzLJ3JnCdNKZtmNyUZaax5b23vwcgWfSeHWhXz86GWIaCj-kiPtkMng3VD-2S86E1sqM1HWXg41qnfk4p0EBc6yGzK_0CHEfNJeUXscfmFHs6K1eZYfOd_osv0QpfZNDtt05_id9KP5cr15u8Z1yfCSyP1u1f-_6WR-6G7_C5ERX9-We0GPT4ddz6NDH9_WNDKIJi-rWLNXMNf1j570OoZ4RXhIF8QvG0RWuU9NZIGqUH797ay2sMt-N53WIfYYWWcHkB5qG1Lh3dx2Jin31n-5o3acXiSusdb48OFio8HdEiQEnqPNFh8G0ogPXTSxQmkdihpoIq6ndLA7X1yynG0Dbk3ruysg9Oo_NndNm9xbEqZWB0f1_CzSxOvfuHQbmiP8RXjq3giuiRfjSUBAAZ2xpf36G80DoPYqle6QZesSV081ZNAj7L0-dmlbDZiU9qs4dY0-EZfbp5ukz2GH7LFY-sjZXiCGltq9vT8-KoM7Y9i5aDzSHKPPul6f9jSjMR4MSp5dgZYfv1NQP0LY-jodzCIDQ1w9QHrZ4qBp4fkR9_eyfoZGzZPocKddQg0c5CPhij5pkacE62wlhQP4SADfJykMIHej3AbJ_dka7hkJq2irWNg4JuLFr8ZmiUo44PrY2L9Q5DA-onNVkRDgfe3rhyBaYQeBvCv1OLrEfPpiombrx2pLr0Yqfk_5DjApFmIphSlnOAiy0VZillaislhkWd1w6cVlum8ELumrrJ0PpW7vGyEmNaZmKgFT_ks5VmZiqzIRFLv8rKs84ZneZ3ldcGmKbZS6YSqUmLdfhLn70XG81yUEy0r1D6-JHFu8BXiLg2Xs-uJW8TRver3nk1TrXzwnzBBBR3frj5LBxn5EX0g421fVThs7Qu6nbav42hPa3Aybwse3wHOJvBJ7_Tif3-pGO_1suD_CQAA___emSYY">