mirror of
https://github.com/python/cpython.git
synced 2025-07-18 00:35:17 +00:00
gh-109889: fix compiler's redundant NOP detection to look past NOPs with no lineno when looking for the next instruction's lineno (#109987)
This commit is contained in:
parent
b14f0ab51c
commit
f580edcc6a
3 changed files with 18 additions and 1 deletions
|
@ -1017,7 +1017,17 @@ remove_redundant_nops(basicblock *bb) {
|
|||
}
|
||||
/* or if last instruction in BB and next BB has same line number */
|
||||
if (next) {
|
||||
if (lineno == next->b_instr[0].i_loc.lineno) {
|
||||
location next_loc = NO_LOCATION;
|
||||
for (int next_i=0; next_i < next->b_iused; next_i++) {
|
||||
cfg_instr *instr = &next->b_instr[next_i];
|
||||
if (instr->i_opcode == NOP && instr->i_loc.lineno == NO_LOCATION.lineno) {
|
||||
/* Skip over NOPs without location, they will be removed */
|
||||
continue;
|
||||
}
|
||||
next_loc = instr->i_loc;
|
||||
break;
|
||||
}
|
||||
if (lineno == next_loc.lineno) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue