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.
Showing
- gcc/testsuite/g++.dg/pr110249.C 16 additions, 0 deletionsgcc/testsuite/g++.dg/pr110249.C
- gcc/testsuite/gcc.dg/pr110080.c 27 additions, 0 deletionsgcc/testsuite/gcc.dg/pr110080.c
- gcc/testsuite/gcc.dg/pr93917.c 5 additions, 2 deletionsgcc/testsuite/gcc.dg/pr93917.c
- gcc/tree-vrp.cc 166 additions, 37 deletionsgcc/tree-vrp.cc
Loading
Please register or sign in to comment