diff options
author | Andrew MacLeod <amacleod@redhat.com> | 2024-06-05 15:12:27 -0400 |
---|---|---|
committer | Andrew MacLeod <amacleod@redhat.com> | 2024-06-10 16:26:58 -0400 |
commit | 74ee12ff68243bb177fb8653474dff80c3792139 (patch) | |
tree | 6c006043c78264870d2d3424305ee5cd489fee29 /gcc/passes.def | |
parent | 9aaf29b9ba5ffe332220d002ddde85d96fd6657d (diff) | |
download | gcc-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.def | 1 |
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 |