On 10/7/20 8:10 AM, Richard Biener wrote:
> On Tue, Oct 6, 2020 at 7:06 PM Andrew MacLeod via Gcc-patches
> <gcc-patches@gcc.gnu.org> wrote:
>>
>> I have now checked in the hybrid EVRP pass.
>>
>> We have resolved all the issue we are aware of with a full Fedora build,
>> but if any more issues arise, please let us know. (And Im sure you
will :-)
>>
>> I made some minor tweaks. the option to the new -fevrp-mode flag
are now:
>>
>> legacy : classic EVRP mode
>> ranger : Ranger only mode
>> *legacy-first : Query ranges with EVRP first, and if that fails try
>> the ranger*
>> ranger-first : Query the ranger first, then evrp
>> ranger-trace : Ranger-only mode plus Show range tracing info in
the dump
>> ranger-debug : Ranger-only mode, and also include all cache
debugging info
>> trace : Hybrid mode with range tracing info
>> debug : Hybrid mode with cache debugging as well as tracing
>>
>> The default is still *legacy-first*.
>
> We'll have to keep -fevrp-mode forever so can you instead make it a
--param
> since I hope it is transitional only? It certainly shouldn't be a
> user-visible flag, should it?
Sounds reasonable.
Attached is a patch to do so. It basically moves the code from
common.opt to params.opt. I also removed the undocumented modifier, as
all --params are supposed to be for internal use only.
OK?
* common.opt (-fevrp-mode): Rename and move...
* params.opt (--param=evrp-mode): ...here.
* gimple-range.h (DEBUG_RANGE_CACHE): Use param_evrp_mode instead
of flag_evrp_mode.
* gimple-ssa-evrp.c (rvrp_folder): Same.
(hybrid_folder): Same.
(execute_early_vrp): Same.
---
gcc/common.opt | 31 -------------------------------
gcc/gimple-range.h | 2 +-
gcc/gimple-ssa-evrp.c | 8 ++++----
gcc/params.opt | 31 +++++++++++++++++++++++++++++++
4 files changed, 36 insertions(+), 36 deletions(-)
diff --git a/gcc/common.opt b/gcc/common.opt
index e2bd90c450d..7e789d1c47f 100644
--- a/gcc/common.opt
+++ b/gcc/common.opt
@@ -2870,37 +2870,6 @@ ftree-vrp
Common Report Var(flag_tree_vrp) Init(0) Optimization
Perform Value Range Propagation on trees.
-fevrp-mode=
-Common Undocumented Joined RejectNegative Enum(evrp_mode)
Var(flag_evrp_mode) Init(EVRP_MODE_EVRP_FIRST) Optimization
--fevrp-mode=[legacy|ranger|legacy-first|ranger-first|ranger-trace|ranger-debug|trace|debug]
Specifies the mode Early VRP should operate in.
-
-Enum
-Name(evrp_mode) Type(enum evrp_mode) UnknownError(unknown evrp mode %qs)
-
-EnumValue
-Enum(evrp_mode) String(legacy) Value(EVRP_MODE_EVRP_ONLY)
-
-EnumValue
-Enum(evrp_mode) String(ranger) Value(EVRP_MODE_RVRP_ONLY)
-
-EnumValue
-Enum(evrp_mode) String(legacy-first) Value(EVRP_MODE_EVRP_FIRST)
-
-EnumValue
-Enum(evrp_mode) String(ranger-first) Value(EVRP_MODE_RVRP_FIRST)
-
-EnumValue
-Enum(evrp_mode) String(ranger-trace) Value(EVRP_MODE_RVRP_TRACE)
-
-EnumValue
-Enum(evrp_mode) String(ranger-debug) Value(EVRP_MODE_RVRP_DEBUG)
-
-EnumValue
-Enum(evrp_mode) String(trace) Value(EVRP_MODE_TRACE)
-
-EnumValue
-Enum(evrp_mode) String(debug) Value(EVRP_MODE_DEBUG)
-
fsplit-paths
Common Report Var(flag_split_paths) Init(0) Optimization
Split paths leading to loop backedges.
diff --git a/gcc/gimple-range.h b/gcc/gimple-range.h
index 4d35e72795f..041dc7c2a97 100644
--- a/gcc/gimple-range.h
+++ b/gcc/gimple-range.h
@@ -165,6 +165,6 @@ private:
};
// Flag to enable debugging the various internal Caches.
-#define DEBUG_RANGE_CACHE (dump_file && (flag_evrp_mode & EVRP_MODE_DEBUG))
+#define DEBUG_RANGE_CACHE (dump_file && (param_evrp_mode &
EVRP_MODE_DEBUG))
#endif // GCC_GIMPLE_RANGE_STMT_H
diff --git a/gcc/gimple-ssa-evrp.c b/gcc/gimple-ssa-evrp.c
index 6be32d7a3f6..363e2ab6816 100644
--- a/gcc/gimple-ssa-evrp.c
+++ b/gcc/gimple-ssa-evrp.c
@@ -118,7 +118,7 @@ public:
rvrp_folder () : substitute_and_fold_engine (), m_simplifier ()
{
- if (flag_evrp_mode & EVRP_MODE_TRACE)
+ if (param_evrp_mode & EVRP_MODE_TRACE)
m_ranger = new trace_ranger ();
else
m_ranger = new gimple_ranger ();
@@ -175,7 +175,7 @@ class hybrid_folder : public evrp_folder
public:
hybrid_folder (bool evrp_first)
{
- if (flag_evrp_mode & EVRP_MODE_TRACE)
+ if (param_evrp_mode & EVRP_MODE_TRACE)
m_ranger = new trace_ranger ();
else
m_ranger = new gimple_ranger ();
@@ -307,8 +307,8 @@ execute_early_vrp ()
scev_initialize ();
calculate_dominance_info (CDI_DOMINATORS);
- // only the last 2 bits matter for choosing the folder.
- switch (flag_evrp_mode & EVRP_MODE_RVRP_FIRST)
+ // Only the last 2 bits matter for choosing the folder.
+ switch (param_evrp_mode & EVRP_MODE_RVRP_FIRST)
{
case EVRP_MODE_EVRP_ONLY:
{
diff --git a/gcc/params.opt b/gcc/params.opt
index 6f308a10da0..d770c55143b 100644
--- a/gcc/params.opt
+++ b/gcc/params.opt
@@ -102,6 +102,37 @@ Maximum size (in bytes) of objects tracked bytewise
by dead store elimination.
Common Joined UInteger Var(param_early_inlining_insns) Init(6)
Optimization Param
Maximal estimated growth of function body caused by early inlining of
single call.
+-param=evrp-mode=
+Common Joined Var(param_evrp_mode) Enum(evrp_mode)
Init(EVRP_MODE_EVRP_FIRST) Param Optimization
+--param=evrp-mode=[legacy|ranger|legacy-first|ranger-first|ranger-trace|ranger-debug|trace|debug]
Specifies the mode Early VRP should operate in.
+
+Enum
+Name(evrp_mode) Type(enum evrp_mode) UnknownError(unknown evrp mode %qs)
+
+EnumValue
+Enum(evrp_mode) String(legacy) Value(EVRP_MODE_EVRP_ONLY)
+
+EnumValue
+Enum(evrp_mode) String(ranger) Value(EVRP_MODE_RVRP_ONLY)
+
+EnumValue
+Enum(evrp_mode) String(legacy-first) Value(EVRP_MODE_EVRP_FIRST)
+
+EnumValue
+Enum(evrp_mode) String(ranger-first) Value(EVRP_MODE_RVRP_FIRST)
+
+EnumValue
+Enum(evrp_mode) String(ranger-trace) Value(EVRP_MODE_RVRP_TRACE)
+
+EnumValue
+Enum(evrp_mode) String(ranger-debug) Value(EVRP_MODE_RVRP_DEBUG)
+
+EnumValue
+Enum(evrp_mode) String(trace) Value(EVRP_MODE_TRACE)
+
+EnumValue
+Enum(evrp_mode) String(debug) Value(EVRP_MODE_DEBUG)
+
-param=fsm-maximum-phi-arguments=
Common Joined UInteger Var(param_fsm_maximum_phi_arguments) Init(100)
IntegerRange(1, 999999) Param Optimization
Maximum number of arguments a PHI may have before the FSM threader
will not try to thread through its block.
--
2.26.2