]> git.ipfire.org Git - thirdparty/gcc.git/commit
tree-optimization/122589 - imm use iterator checking fallout master trunk
authorRichard Biener <rguenther@suse.de>
Fri, 7 Nov 2025 09:15:36 +0000 (10:15 +0100)
committerRichard Biener <rguenther@suse.de>
Fri, 7 Nov 2025 11:42:43 +0000 (12:42 +0100)
commit59e688be49a929daaa6f44f2a0bfff33e789e66b
treeee68d005928443af3cfc987605b4c0d99540cc96
parent7197d8062fddc26c05c0da0bbfcd4128de788e34
tree-optimization/122589 - imm use iterator checking fallout

The following addresses the latent issue that gsi_replace_with_seq
causes debug info to unnecessarily degrade and in this process
break the new immediate use iterator sanity checking.  In particular
gsi_remove has side-effects on debug stmts even when operating
in non-permanent operation.  But as we are operating on a sequence
not in the IL here this should be avoided.  Re-factoring
gsi_replace_with_seq to not rely on gsi_remove fulfills this.

I've noticed gsi_split_seq_before has misleading documentation.
Fixed thereby as well.

PR tree-optimization/122589
PR middle-end/122594
* gimple-iterator.cc (gsi_replace_with_seq): Instead of
removing the last stmt from the sequence with gsi_remove,
split it using gsi_split_seq_before.
(gsi_split_seq_before): Fix bogus documentation.

* g++.dg/torture/pr122589.C: New testcase.
gcc/gimple-iterator.cc
gcc/testsuite/g++.dg/torture/pr122589.C [new file with mode: 0644]