Hi.

That fixes many UBSAN issues that are caused by:

  {"all", dump_flags_t (~(TDF_RAW | TDF_SLIM | TDF_LINENO | TDF_GRAPH
                        | TDF_STMTADDR | TDF_RHS_ONLY | TDF_NOUID
                        | TDF_ENUMERATE_LOCALS | TDF_SCEV | TDF_GIMPLE))},

That goes out of:

      minv = TYPE_MIN_VALUE (TREE_TYPE (type));
      maxv = TYPE_MAX_VALUE (TREE_TYPE (type));

Thus I would like to limit value of "all".

Patch can bootstrap on ppc64le-redhat-linux and survives regression tests.
And UBSAN errors are gone.

Ready to be installed?
Martin


gcc/ChangeLog:

2018-07-23  Martin Liska  <mli...@suse.cz>

        PR middle-end/86645
        * dumpfile.c: And excluded values with TDF_ALL_VALUES.
        * dumpfile.h (enum dump_flag): Defince TDF_ALL_VALUES.
---
 gcc/dumpfile.c | 7 ++++---
 gcc/dumpfile.h | 5 ++++-
 2 files changed, 8 insertions(+), 4 deletions(-)


diff --git a/gcc/dumpfile.c b/gcc/dumpfile.c
index 6c9920c6bd2..176c9b846d7 100644
--- a/gcc/dumpfile.c
+++ b/gcc/dumpfile.c
@@ -150,9 +150,10 @@ static const kv_pair<dump_flags_t> dump_options[] =
   {"missed", MSG_MISSED_OPTIMIZATION},
   {"note", MSG_NOTE},
   {"optall", MSG_ALL},
-  {"all", dump_flags_t (~(TDF_RAW | TDF_SLIM | TDF_LINENO | TDF_GRAPH
-			| TDF_STMTADDR | TDF_RHS_ONLY | TDF_NOUID
-			| TDF_ENUMERATE_LOCALS | TDF_SCEV | TDF_GIMPLE))},
+  {"all", dump_flags_t (TDF_ALL_VALUES
+			& ~(TDF_RAW | TDF_SLIM | TDF_LINENO | TDF_GRAPH
+			    | TDF_STMTADDR | TDF_RHS_ONLY | TDF_NOUID
+			    | TDF_ENUMERATE_LOCALS | TDF_SCEV | TDF_GIMPLE))},
   {NULL, TDF_NONE}
 };
 
diff --git a/gcc/dumpfile.h b/gcc/dumpfile.h
index ad14acdfc9a..1dbe3b85b7c 100644
--- a/gcc/dumpfile.h
+++ b/gcc/dumpfile.h
@@ -146,7 +146,10 @@ enum dump_flag
 	     | MSG_NOTE),
 
   /* Dumping for -fcompare-debug.  */
-  TDF_COMPARE_DEBUG = (1 << 25)
+  TDF_COMPARE_DEBUG = (1 << 25),
+
+  /* All values.  */
+  TDF_ALL_VALUES = (1 << 26) - 1
 };
 
 /* Dump flags type.  */

Reply via email to