<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/88959>88959</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
AArch64 backend: extractelement with poison index leads to OOB memory load
</td>
</tr>
<tr>
<th>Labels</th>
<td>
backend:AArch64,
llvm:codegen,
miscompilation
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
regehr
</td>
</tr>
</table>
<pre>
here's one that's analogous to a few we've previously seen, that @topperc has fixed:
```llvm
define i8 @f(<16 x i8> %0, i32 %1) {
%3 = sub nuw i32 1, %1
%4 = extractelement <16 x i8> %0, i32 %3
ret i8 %4
}
```
the backend gives:
```
_f:
sub sp, sp, #16
mov w8, #1
mov x9, sp
str q0, [sp]
sub w8, w8, w0
orr x8, x9, x8
ldrb w0, [x8]
add sp, sp, #16
ret
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJx8U82SmzAMfhpx0WzG2JDAgUOyaa77CB2DBbg1mNomYd--g8lm27SzmYxB0vd9-kGW3utuJKogP0F-TuQceusqRx31Lqmteq96cgT84NGOhKGXIRpylMZ2dvYYLEps6Ya3FXYlnBxdtZ29eUdPNAJ_jTSEjAU7TeQa7KXHVi-kQByBnYEdYc-2vzHXYXMpavVIqIuV2QIvQLyme1xQFyC-IfCcrdpa8PU9BV4iHE4bF1eXQBBn9HON43yLuHQlRPAnKosoWoKTTSBDA40Bv0wlPtiOQiyP59m9i8P5qZ3NDD1hLZufNCrs9JX8v31v5vcWxFrWFmOln-v1nNbs2wlcpPtHfLBXYOWt-Ijg378n3FLedR7ywQErf8XmID_5CfLzU-5N-36yR9C6lblE9ya7FI-gUS5SP3SX4k9dqdSXPTkK_51NoiqhSlHKhKr0kApeiizlSV_lgrcFk1neioylWaFykZWcGtnIknJxSHTFGc9Ylu7TImdpupMqK4VIqS5kUxd1ARmjQWqzW7dvZ12XaO9nqoqizMvEyJqMj1eE8_tnBHE8Hl3T7zPgHPgrcB43Vxwbq6hb1_7uHrRv7DBpI4O20Z2fE1et6Jd67jxkzGgf_GfuoIOh6i6Pnwmfl_SmQ4-T1d6OqEdFCxqSKt7It7cTDjRY947GSpXMzlR9CFNcPH4Bful06Od619gB-CWWvj1eJmd_UBOAX-IMPPBLHMPvAAAA___DBim0">