Disable -fcheck-pointer-bounds with sanitizers.
authorMartin Liska <mliska@suse.cz>
Thu, 9 Mar 2017 10:04:50 +0000 (11:04 +0100)
committerMartin Liska <marxin@gcc.gnu.org>
Thu, 9 Mar 2017 10:04:50 +0000 (10:04 +0000)
2017-03-09  Martin Liska  <mliska@suse.cz>

PR target/65705
PR target/69804
* toplev.c (process_options): Disable -fcheck-pointer-bounds with
sanitizers.
2017-03-09  Martin Liska  <mliska@suse.cz>

PR target/65705
PR target/69804
* gcc.target/i386/pr71458.c: Update scanned pattern.

From-SVN: r245997

gcc/ChangeLog
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/i386/pr71458.c
gcc/toplev.c

index 006052b..33670ab 100644 (file)
@@ -1,3 +1,10 @@
+2017-03-09  Martin Liska  <mliska@suse.cz>
+
+       PR target/65705
+       PR target/69804
+       * toplev.c (process_options): Disable -fcheck-pointer-bounds with
+       sanitizers.
+
 2017-03-09  Marek Polacek  <polacek@redhat.com>
 
        PR c++/79672
index 840eb1d..e31735b 100644 (file)
@@ -1,3 +1,9 @@
+2017-03-09  Martin Liska  <mliska@suse.cz>
+
+       PR target/65705
+       PR target/69804
+       * gcc.target/i386/pr71458.c: Update scanned pattern.
+
 2017-03-09  Marek Polacek  <polacek@redhat.com>
 
        PR c++/79672
index 27e7764..2faf6bb 100644 (file)
@@ -1,6 +1,6 @@
 /* { dg-do compile { target { ! x32 } } } */
 /* { dg-options "-fcheck-pointer-bounds -mmpx -fsanitize=bounds" } */
-/* { dg-error "-fcheck-pointer-bounds is not supported with -fsanitize=bounds" "" { target *-*-* } 0 } */
+/* { dg-error "-fcheck-pointer-bounds is not supported with Undefined Behavior Sanitizer" "" { target *-*-* } 0 } */
 
 enum {} a[0];
 void fn1(int);
index beb581a..6a7e4fb 100644 (file)
@@ -1274,22 +1274,30 @@ process_options (void)
          flag_check_pointer_bounds = 0;
        }
 
-      if (flag_sanitize & SANITIZE_ADDRESS)
+      if (flag_sanitize)
        {
-         error_at (UNKNOWN_LOCATION,
-                   "-fcheck-pointer-bounds is not supported with "
-                   "Address Sanitizer");
-         flag_check_pointer_bounds = 0;
-       }
+         if (flag_sanitize & SANITIZE_ADDRESS)
+           error_at (UNKNOWN_LOCATION,
+                     "-fcheck-pointer-bounds is not supported with "
+                     "Address Sanitizer");
+
+         if (flag_sanitize & (SANITIZE_UNDEFINED | SANITIZE_NONDEFAULT))
+           error_at (UNKNOWN_LOCATION,
+                     "-fcheck-pointer-bounds is not supported with "
+                     "Undefined Behavior Sanitizer");
+
+         if (flag_sanitize & SANITIZE_LEAK)
+           error_at (UNKNOWN_LOCATION,
+                     "-fcheck-pointer-bounds is not supported with "
+                     "Leak Sanitizer");
+
+         if (flag_sanitize & SANITIZE_THREAD)
+           error_at (UNKNOWN_LOCATION,
+                     "-fcheck-pointer-bounds is not supported with "
+                     "Thread Sanitizer");
 
-      if (flag_sanitize & SANITIZE_BOUNDS)
-       {
-         error_at (UNKNOWN_LOCATION,
-                   "-fcheck-pointer-bounds is not supported with "
-                   "-fsanitize=bounds");
          flag_check_pointer_bounds = 0;
        }
-
     }
 
   /* One region RA really helps to decrease the code size.  */