[mono][interp] Update var definition when inserting new instructions during cprop by BrzVlad · Pull Request #116179 · dotnet/runtime

@BrzVlad

…during cprop

The definition was not updated, leading to invalid optimizations later on.

AI review requested due to automatic review settings

May 31, 2025 16:45

kotlarmilos

BrzVlad added a commit to BrzVlad/runtime that referenced this pull request

Jun 9, 2025
…during cprop (dotnet#116179)

The definition was not updated, leading to invalid optimizations later on.

jozkee pushed a commit that referenced this pull request

Jun 10, 2025
* [mono][interp] Add possibility to configure interp options from env var

* [mono][interp] Update var definition when inserting new instructions during cprop (#116179)

The definition was not updated, leading to invalid optimizations later on.

* [mono][interp] Fix broken code attempting to reapply superinstruction optimization (#116069)

For each instruction in a basic block we check for patterns. In a certain case, once we replaced the instruction with a new one, we were attempting to do a loop reiteration by setting `ins = ins->prev` so after the loop reincrements with `ins = ins->next` we check super instruction patterns again for the current instruction. This is broken if `ins` was the first instruction in a basic block, aka `ins->prev` is NULL. This used to be impossible before SSA optimizations, since super instruction pass was applying optimizations in a single basic block only.