aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAldy Hernandez <aldyh@redhat.com>2020-06-10 14:37:49 +0200
committerAldy Hernandez <aldyh@redhat.com>2020-06-10 14:44:48 +0200
commite09c42b8a4ce917dc3a2d89b76a9bd25b4d55eb3 (patch)
tree6e2392f0df7ffda96f3b27bec7ea06f96c235194
parent52e2fc662a73b7b463709be2caaec1bf6454a747 (diff)
downloadgcc-e09c42b8a4ce917dc3a2d89b76a9bd25b4d55eb3.zip
gcc-e09c42b8a4ce917dc3a2d89b76a9bd25b4d55eb3.tar.gz
gcc-e09c42b8a4ce917dc3a2d89b76a9bd25b4d55eb3.tar.bz2
Revamp frvrp*changes flags.
Flags are now: frvrp1-changes Common Var(flag_rvrp1_changes) Init(0) Allow IL changes in rvrp1 pass. frvrp2-changes Common Var(flag_rvrp2_changes) Init(1) Allow IL changes in rvrp2 pass. fevrp-traps Common Var(flag_evrp_traps) Init(0) Trap on any EVRP changes to the IL. There is also another flag, but it is for testsuite use only, to turn on/off the RVRP changes for all passes: frvrp-changes Common Var(flag_rvrp_changes) Init(-1) Override for both -frvrp1-changes and -frvrp2-changes. This is meant to be used by the testsuite to keep RVRP passes from making IL changes in some tests, thus making easier to test evrp functionality.
-rw-r--r--gcc/common.opt22
-rw-r--r--gcc/gimple-ranger-vrp.cc10
-rw-r--r--gcc/misc.cc2
-rw-r--r--gcc/misc.h6
-rw-r--r--gcc/opts.c2
-rw-r--r--gcc/passes.def4
-rw-r--r--gcc/vr-values.c2
7 files changed, 21 insertions, 27 deletions
diff --git a/gcc/common.opt b/gcc/common.opt
index 5404145..7e9d2a4 100644
--- a/gcc/common.opt
+++ b/gcc/common.opt
@@ -2922,17 +2922,23 @@ fvect-cost-model
Common Alias(fvect-cost-model=,dynamic,unlimited)
Enables the dynamic vectorizer cost model. Preserved for backward compatibility.
-frvrp-changes
-Common Var(flag_rvrp_changes) Init(-1)
-Allow RVRP passes to make IL changes.
-
-;; Allow IL changes in rvrp1 pass.
frvrp1-changes
-Common Var(flag_rvrp1_changes) Init(-1)
+Common Var(flag_rvrp1_changes) Init(0)
+Allow IL changes in rvrp1 pass.
-;; Allow IL changes in rvrp2 pass.
frvrp2-changes
-Common Var(flag_rvrp2_changes) Init(-1)
+Common Var(flag_rvrp2_changes) Init(1)
+Allow IL changes in rvrp2 pass.
+
+fevrp-traps
+Common Var(flag_evrp_traps) Init(0)
+Trap on any EVRP changes to the IL.
+
+frvrp-changes
+Common Var(flag_rvrp_changes) Init(-1)
+Override for both -frvrp1-changes and -frvrp2-changes. This is meant
+to be used by the testsuite to keep RVRP passes from making IL changes
+in some tests, thus making easier to test evrp functionality.
ftree-vect-loop-version
Common Ignore
diff --git a/gcc/gimple-ranger-vrp.cc b/gcc/gimple-ranger-vrp.cc
index dd8a1ac..02bb1a3 100644
--- a/gcc/gimple-ranger-vrp.cc
+++ b/gcc/gimple-ranger-vrp.cc
@@ -161,20 +161,14 @@ public:
pass++;
}
opt_pass *clone () { return new pass_ranger_vrp (m_ctxt); }
- void set_pass_param (unsigned int n ATTRIBUTE_UNUSED, bool param)
- {
- allow_il_changes = param;
- }
virtual bool gate (function *)
{ return flag_tree_vrp != 0; }
virtual unsigned int execute (function *)
{
- // -frvrp[12]-changes overrides pass defaults.
- if (rvrp_pass_num == 1 && flag_rvrp1_changes != -1)
+ if (rvrp_pass_num == 1)
allow_il_changes = flag_rvrp1_changes;
- if (rvrp_pass_num == 2 && flag_rvrp2_changes != -1)
+ if (rvrp_pass_num == 2)
allow_il_changes = flag_rvrp2_changes;
-
return execute_ranger_vrp (allow_il_changes);
}
private:
diff --git a/gcc/misc.cc b/gcc/misc.cc
index e65e034..8a4e358 100644
--- a/gcc/misc.cc
+++ b/gcc/misc.cc
@@ -160,7 +160,7 @@ gimple_state::set_orig_stmt (gimple *stmt)
void
gimple_state::maybe_dump_differences_and_trap (gimple *new_stmt, tree lhs)
{
- if (evrp_trap_p ())
+ if (flag_evrp_traps)
{
if (unseen_function_p ())
{
diff --git a/gcc/misc.h b/gcc/misc.h
index 0f2fa3e..2842617 100644
--- a/gcc/misc.h
+++ b/gcc/misc.h
@@ -66,9 +66,3 @@ private:
const irange *m_new_range;
class vr_values *m_vr_values;
};
-
-static inline bool
-evrp_trap_p ()
-{
- return flag_rvrp1_changes > 0;
-}
diff --git a/gcc/opts.c b/gcc/opts.c
index cbd7de7..2b4509a 100644
--- a/gcc/opts.c
+++ b/gcc/opts.c
@@ -973,7 +973,7 @@ finish_options (struct gcc_options *opts, struct gcc_options *opts_set,
opts->x_flag_reorder_blocks = 1;
}
- // -frvrp-changes overrides the individual pass settings.
+ // -frvrp-changes overrides the individual -frvrp[12]-changes.
if (opts->x_flag_rvrp_changes != -1)
{
opts->x_flag_rvrp1_changes = opts->x_flag_rvrp_changes;
diff --git a/gcc/passes.def b/gcc/passes.def
index 9cbd9cf..edf579a 100644
--- a/gcc/passes.def
+++ b/gcc/passes.def
@@ -85,13 +85,13 @@ along with GCC; see the file COPYING3. If not see
NEXT_PASS (pass_build_ealias);
NEXT_PASS (pass_fre, true /* may_iterate */);
- NEXT_PASS (pass_ranger_vrp, false /* allow_il_changes */);
+ NEXT_PASS (pass_ranger_vrp);
/* Run copy-prop to keep evrp below from doing simple copy prop
and messing up our comparison and trap phase. */
NEXT_PASS (pass_evrp_copy_prop);
NEXT_PASS (pass_early_vrp);
- NEXT_PASS (pass_ranger_vrp, true /* allow_il_changes */);
+ NEXT_PASS (pass_ranger_vrp);
NEXT_PASS (pass_merge_phi);
NEXT_PASS (pass_dse);
NEXT_PASS (pass_cd_dce);
diff --git a/gcc/vr-values.c b/gcc/vr-values.c
index 5f9e64e..0a8f14a 100644
--- a/gcc/vr-values.c
+++ b/gcc/vr-values.c
@@ -4011,7 +4011,7 @@ simplify_conversion_using_ranges (gimple_stmt_iterator *gsi, gimple *stmt)
// FIXME: This conversion has nothing to do with ranges, and the way
// it uses global ranges versus local ranges is interfering with our
// ability to diagnose differences between evrp and rvrp1.
- if (evrp_trap_p ())
+ if (flag_evrp_traps)
return false;
/* Get the value-range of the inner operand. Use get_range_info in