Commit a4b6b9f
committed
Fix bug in FixStackmapsSpillReloads pass.
This pass is responsible for moving stackmap calls at the machine IR level
before register spill reloads inserted by the register allocator. Doing so
requires the reloaded registers tracked by stackmaps to be replaced with the
spill location on the stack. In rare cases it can happen that an implicit
register in the stackmap (which is not written into the stackmap record) is
being replaced with a spill location, which forces it to be written to the
stackmap. This can lead to bugs during deoptimisation (e.g. the number of LLVM
IR variables inside the stackmap call doesn't match the amount of locations
in the stackmap record). Omitting implicit registers during this pass, fixes
this problem.1 parent 0cc0d20 commit a4b6b9f
1 file changed
+5
-1
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
137 | 137 | | |
138 | 138 | | |
139 | 139 | | |
140 | | - | |
| 140 | + | |
| 141 | + | |
| 142 | + | |
| 143 | + | |
| 144 | + | |
141 | 145 | | |
142 | 146 | | |
143 | 147 | | |
| |||
0 commit comments