aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-vrp.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/tree-vrp.c')
-rw-r--r--gcc/tree-vrp.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/gcc/tree-vrp.c b/gcc/tree-vrp.c
index b0b217b..ba7a4ef 100644
--- a/gcc/tree-vrp.c
+++ b/gcc/tree-vrp.c
@@ -4450,11 +4450,13 @@ const pass_data pass_data_vrp =
( TODO_cleanup_cfg | TODO_update_ssa ), /* todo_flags_finish */
};
+static int vrp_pass_num = 0;
class pass_vrp : public gimple_opt_pass
{
public:
pass_vrp (gcc::context *ctxt)
- : gimple_opt_pass (pass_data_vrp, ctxt), warn_array_bounds_p (false)
+ : gimple_opt_pass (pass_data_vrp, ctxt), warn_array_bounds_p (false),
+ my_pass (++vrp_pass_num)
{}
/* opt_pass methods: */
@@ -4466,10 +4468,16 @@ public:
}
virtual bool gate (function *) { return flag_tree_vrp != 0; }
virtual unsigned int execute (function *fun)
- { return execute_vrp (fun, warn_array_bounds_p); }
+ {
+ if ((my_pass == 1 && param_vrp1_mode == VRP_MODE_RANGER)
+ || (my_pass == 2 && param_vrp2_mode == VRP_MODE_RANGER))
+ return execute_ranger_vrp (fun, warn_array_bounds_p);
+ return execute_vrp (fun, warn_array_bounds_p);
+ }
private:
bool warn_array_bounds_p;
+ int my_pass;
}; // class pass_vrp
} // anon namespace