while x:
0 if 1 else 0
+ def test_remove_redundant_nop_edge_case(self):
+ # See gh-109889
+ def f():
+ a if (1 if b else c) else d
+
@requires_debug_ranges()
class TestSourcePositions(unittest.TestCase):
# Ensure that compiled code snippets have correct line and column numbers
}
/* 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;
}
}