https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110903
Thomas Koenig <tkoenig at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Summary|[12/13/14 Regression] Dead |[12/13 Regression] Dead |Code Elimination Regression |Code Elimination Regression --- Comment #5 from Thomas Koenig <tkoenig at gcc dot gnu.org> --- (In reply to Andrew Pinski from comment #4) > (In reply to Thomas Koenig from comment #3) > > The code from comment#2 and from comment#3 no longer calls foo > > with current trunk, r14-5108-g751fc7bcdcdf25 . > > > > Now, to see which commit fixed it... > > My bet is on r14-4089-gd45ddc2c04e471 . Weird thing is that I do see this on POWER (I often use gcc120 for compiling because it is the beefiest machine I can lay my hands on). However, this was actually fixed by r14-4141-gbf6b107e2a3423: bf6b107e2a342319b3787ec960fc8014ef3aff91 is the first new commit commit bf6b107e2a342319b3787ec960fc8014ef3aff91 Author: Andrew MacLeod <amacl...@redhat.com> Date: Wed Sep 13 11:52:15 2023 -0400 New early __builtin_unreachable processing. in VRP passes before __builtin_unreachable MUST be removed, only remove it if all exports affected by the unreachable can have global values updated, and do not involve loads from memory. PR tree-optimization/110080 PR tree-optimization/110249 gcc/ * tree-vrp.cc (remove_unreachable::final_p): New. (remove_unreachable::maybe_register): Rename from maybe_register_block and call early or final routine. (fully_replaceable): New. (remove_unreachable::handle_early): New. (remove_unreachable::remove_and_update_globals): Remove non-final processing. (rvrp_folder::rvrp_folder): Add final flag to constructor. (rvrp_folder::post_fold_bb): Remove unreachable registration. (rvrp_folder::pre_fold_stmt): Move unreachable processing to here. (execute_ranger_vrp): Adjust some call parameters. gcc/testsuite/ * g++.dg/pr110249.C: New. * gcc.dg/pr110080.c: New. * gcc.dg/pr93917.c: Adjust.