aboutsummaryrefslogtreecommitdiff
path: root/gcc/passes.def
diff options
context:
space:
mode:
authorAndrew MacLeod <amacleod@redhat.com>2024-06-05 15:12:27 -0400
committerAndrew MacLeod <amacleod@redhat.com>2024-06-10 16:26:58 -0400
commit74ee12ff68243bb177fb8653474dff80c3792139 (patch)
tree6c006043c78264870d2d3424305ee5cd489fee29 /gcc/passes.def
parent9aaf29b9ba5ffe332220d002ddde85d96fd6657d (diff)
downloadgcc-74ee12ff68243bb177fb8653474dff80c3792139.zip
gcc-74ee12ff68243bb177fb8653474dff80c3792139.tar.gz
gcc-74ee12ff68243bb177fb8653474dff80c3792139.tar.bz2
Move array_bounds warnings into a separate pass.
Array bounds checking is currently tied to VRP. This causes issues with using laternate VRP algorithms as well as experimenting with moving the location of the warnings later. This moves it to its own pass and cleans up the vrp_pass object. * gimple-array-bounds.cc (array_bounds_checker::array_bounds_checker): Always use current range_query. (pass_data_array_bounds): New. (pass_array_bounds): New. (make_pass_array_bounds): New. * gimple-array-bounds.h (array_bounds_checker): Adjust prototype. * passes.def (pass_array_bounds): New. Add after VRP1. * timevar.def (TV_TREE_ARRAY_BOUNDS): New timevar. * tree-pass.h (make_pass_array_bounds): Add prototype. * tree-vrp.cc (execute_ranger_vrp): Remove warning param and do not invoke array bounds warning pass. (pass_vrp::pass_vrp): Adjust params. (pass_vrp::close): Adjust parameters. (pass_vrp::warn_array_bounds_p): Remove. (make_pass_vrp): Remove warning param. (make_pass_early_vrp): Remove warning param. (make_pass_fast_vrp): Remove warning param.
Diffstat (limited to 'gcc/passes.def')
-rw-r--r--gcc/passes.def1
1 files changed, 1 insertions, 0 deletions
diff --git a/gcc/passes.def b/gcc/passes.def
index 1cbbd41..041229e 100644
--- a/gcc/passes.def
+++ b/gcc/passes.def
@@ -226,6 +226,7 @@ along with GCC; see the file COPYING3. If not see
NEXT_PASS (pass_merge_phi);
NEXT_PASS (pass_thread_jumps_full, /*first=*/true);
NEXT_PASS (pass_vrp, false /* final_p*/);
+ NEXT_PASS (pass_array_bounds);
NEXT_PASS (pass_dse);
NEXT_PASS (pass_dce);
/* pass_stdarg is always run and at this point we execute