Skip to content

Commit 567505f

Browse files
authored
[mono][interp] Update var definition when inserting new instructions during cprop (#116179)
The definition was not updated, leading to invalid optimizations later on.
1 parent dda9996 commit 567505f

File tree

1 file changed

+2
-0
lines changed

1 file changed

+2
-0
lines changed

src/mono/mono/mini/interp/transform-opt.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3127,6 +3127,7 @@ interp_cprop (TransformData *td)
31273127
ins->data [2] = GINT_TO_UINT16 (ldsize);
31283128

31293129
interp_clear_ins (ins->prev);
3130+
td->var_values [ins->dreg].def = ins;
31303131
}
31313132
if (td->verbose_level) {
31323133
g_print ("Replace ldloca/ldobj_vt pair :\n\t");
@@ -3207,6 +3208,7 @@ interp_cprop (TransformData *td)
32073208
ins->data [2] = vtsize;
32083209

32093210
interp_clear_ins (ins->prev);
3211+
td->var_values [ins->dreg].def = ins;
32103212

32113213
// MINT_MOV_DST_OFF doesn't work if dreg is allocated at the same location as the
32123214
// field value to be stored, because its behavior is not atomic in nature. We first

0 commit comments

Comments
 (0)