diff options
author | Richard Biener <rguenther@suse.de> | 2024-10-13 12:44:04 +0200 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2024-10-15 13:32:18 +0200 |
commit | 7d15248d41dc45a4ba2d38ff532b672a5c0651d0 (patch) | |
tree | 1846b6a7625ca616973471b0a6e230831974b4a0 /libcpp | |
parent | 97f98855d4157a2511a713129ec77740fe6f88dc (diff) | |
download | gcc-7d15248d41dc45a4ba2d38ff532b672a5c0651d0.zip gcc-7d15248d41dc45a4ba2d38ff532b672a5c0651d0.tar.gz gcc-7d15248d41dc45a4ba2d38ff532b672a5c0651d0.tar.bz2 |
tree-optimization/116907 - stale BLOCK reference from DECL_VALUE_EXPR
When we remove unused BLOCKs we fail to clean references to them
from DECL_VALUE_EXPRs of variables in other BLOCKs which in the
PR causes LTO streaming to walk into pointers to GGC freed blocks.
There's the question of whether such DECL_VALUE_EXPRs should keep
variables and blocks referenced live (it doesn't seem to do that)
and whether such DECL_VALUE_EXPRs should have survived in the
first place.
PR tree-optimization/116907
* tree-ssa-live.cc (clear_unused_block_pointer_in_block): New
helper.
(clear_unused_block_pointer): Call it.
Diffstat (limited to 'libcpp')
0 files changed, 0 insertions, 0 deletions