<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/87904>87904</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
Error address for instruction adrp in JIT compilation
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
cfg1234
</td>
</tr>
</table>
<pre>
Affected version: 15.0.4
Here is the part of the IR code:
define dso_local noalias nonnull ptr @getExecution() local_unnamed_addr #0 {
entry:
%call = tail call noalias noundef nonnull dereferenceable(96) ptr @_Znwm(i64 noundef 96) #9
tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(96) %call, i8 0, i64 96, i1 false)
store ptr getelementptr inbounds ({ [8 x ptr] }, ptr @_ZTVN3com4my4plan14MyImpl4E, i64 0, inrange i32 0, i64 2), ptr %call, align 8, !tbaa !2
ret ptr %call
}
When the JIT is used to compile the code, there is a low probability that the address offset of the adrp instruction is incorrect:
correct machine code example:
0: f81f0ffe str x30, [sp, #-16]!
4: 52801000 mov w0, #0x80 // #128
8: 9400000e bl 38 <_Znwm+0x38>
c: b0117fe8 adrp x8, 22ffd000 <getExecution+0x22ffd000>
10: 6f00e400 movi v0.2d, #0x0
14: f9400108 ldr x8, [x8]
18: 3d801c00 str q0, [x0, #112]
1c: ad008000 stp q0, q0, [x0, #16]
wrong machine code example:
0: f81f0ffe str x30, [sp, #-16]!
4: 52801000 mov w0, #0x80 // #128
8: 9400000e bl 38 <_Znwm+0x38>
c: d0ffffe8 adrp x8, ffffffffffffe000 <getExecution+0xffffffffffffe000>
10: 6f00e400 movi v0.2d, #0x0
14: f9400108 ldr x8, [x8]
18: 3d801c00 str q0, [x0, #112]
1c: ad008000 stp q0, q0, [x0, #16]
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJy8Vs1u6zYTfRp6M4hBUj-mFl7EcYIvH9AuiosW6CagxKHNgiJVkk6cty8oybIT3AAFblsuTEqcOefM6IiyjNEcHOKWVDtS7VfylI4-bDt9YLwoV61X79t7rbFLqOAVQzTekeIeWLWm65LQPaH3_8OAYCKkI8IgQwKvx_XzL9B5haS4n-IUauMQVPQv1nfSgvPSGhnBeedO1sKQApCSHjA9nrE7pczFBeENjPEvJ-dkj-pFKhWA8IIC2ewmbHQpvC9MAIRXnbQWSLGHJI2F8epKeHIK9UKsMKDGgK5D2VokXDR1pp0Fvfzu3nrChanLJXUKILxoLpRXmldvVM6z9rVf99hHTOuBrk1dEi4y5md-ac3BAau_FDKXQ_gDGAF0nOtyFPEAhoGWNiLhi5aYfMBR_gETWuzRpXxlXJupI-S-bnZAqp2Acw4k1R7IZp_xlqq__fpz0fm-7N_LwUrHyp_en_vBlo8X_kmIC9IdEEzBr8p4FnPBuoqfChV5SThLrZR55hfZAdOHjPF2VjUufjuiG431_-dv2W-niAqSh873g7E4bo2G4w95PZlSgvVvMATfytZYk94hHWUaY7ONMEbwWkdcXCtVGMC4mMKpyw7MIMZ1PgTs0uKw-Rp62R2zqTMv4Fn2g8UbGwLNL4sWTFOtEeYRUxjnczH2i1S7OEwtKe5YTao94WxBKDMCQMUFZZTSC0bvX-GNzln0LJaNT4PwJ8KfchDjYgEVE2hT0jwWYa2d5kIAKR5m2-_ouRCkeFySuym5pYxtNIpL8ti4XNX4eDnXWmW9pHj4-ELv6PmyeYPK6IRaa0qx_FCnyfMrXXO1lEvnNDZ3R-dKGF20WDV3WMwNPovc1gvXXH6hBGXdlevyXP68PJbzpcGM8dv8uQNSUSrobf5wk_8dlHoBuf19C94d_p6T4Lte-lEf5fHRS_-WaxTVWn_pGX0z8CvvfA76YQ_9Uyb6D92zUttCNUUjV7hlG8bLmm1YuTpuFa94XSHWtKsEIme14oVuS1HVTVV0fGW2nPKSlnRDi1IU5Zo2TSmbWhTNRjRtp0hJsZfGrsePlw-HlYnxhFuxaWi5srJFG8c_C5w7fINxk_Bc3ypsc85dezrE_PEzMcUrSjLJ4vYxBB-Wg1f78OGknY_e8XyfDnWZ769OwW6PKQ0xvw-jMw8mHU_tuvM94U-ZY57uhuD_yOc0fxqVRcKfRuV_BQAA__8v23Gc">