As pointed out in Bug 78285, some error calls should actually be inform calls.
I'm not adding any new test; existing switch-5.c covers all the cases so I 
didn't
see much value in duplicating that part of the test.

Bootstrapped/regtested on x86_64-linux, ok for trunk?

2016-11-16  Marek Polacek  <pola...@redhat.com>

        PR c/78285
        * c-common.c (c_add_case_label): Turn error_at calls into inform.

        * gcc.dg/switch-5.c: Turn several dg-errors into dg-messages.
        * g++.dg/ext/case-range2.C: Likewise.

diff --git gcc/c-family/c-common.c gcc/c-family/c-common.c
index 2997c83..3eb7f45 100644
--- gcc/c-family/c-common.c
+++ gcc/c-family/c-common.c
@@ -4968,19 +4968,19 @@ c_add_case_label (location_t loc, splay_tree cases, 
tree cond, tree orig_type,
       if (high_value)
        {
          error_at (loc, "duplicate (or overlapping) case value");
-         error_at (DECL_SOURCE_LOCATION (duplicate),
-                   "this is the first entry overlapping that value");
+         inform (DECL_SOURCE_LOCATION (duplicate),
+                 "this is the first entry overlapping that value");
        }
       else if (low_value)
        {
          error_at (loc, "duplicate case value") ;
-         error_at (DECL_SOURCE_LOCATION (duplicate), "previously used here");
+         inform (DECL_SOURCE_LOCATION (duplicate), "previously used here");
        }
       else
        {
          error_at (loc, "multiple default labels in one switch");
-         error_at (DECL_SOURCE_LOCATION (duplicate),
-                   "this is the first default label");
+         inform (DECL_SOURCE_LOCATION (duplicate),
+                 "this is the first default label");
        }
       goto error_out;
     }
diff --git gcc/testsuite/g++.dg/ext/case-range2.C 
gcc/testsuite/g++.dg/ext/case-range2.C
index 985ded3..f1165ad 100644
--- gcc/testsuite/g++.dg/ext/case-range2.C
+++ gcc/testsuite/g++.dg/ext/case-range2.C
@@ -11,7 +11,7 @@ T f2 (T i)
 {
   switch (i)
   {
-    case low ... high : return i + 1;  // { dg-error "previously" }
+    case low ... high : return i + 1;  // { dg-message "previously" }
     case 5 : return i + 2;             // { dg-error "duplicate" }
     default : return 0;
   }
@@ -20,7 +20,7 @@ T f2 (T i)
 int f (int i)
 {
   switch (i) {
-    case 1 ... 10: return i + 1;       // { dg-error "first entry" }
+    case 1 ... 10: return i + 1;       // { dg-message "first entry" }
     case 3 ... 5 : return i + 3;       // { dg-error "duplicate" }
     default: return f2 (i);            // { dg-message "required" }
   }
diff --git gcc/testsuite/gcc.dg/switch-5.c gcc/testsuite/gcc.dg/switch-5.c
index 5a58490..a097d44 100644
--- gcc/testsuite/gcc.dg/switch-5.c
+++ gcc/testsuite/gcc.dg/switch-5.c
@@ -40,13 +40,13 @@ f (int a, double d, void *p)
   switch (a)
     {
     case 0:
-    default: /* { dg-error "this is the first default label" } */
+    default: /* { dg-message "this is the first default label" } */
     case 1:
     default: ; /* { dg-error "multiple default labels in one switch" } */
     }
   switch (a)
     {
-    case 0: /* { dg-error "previously used here" } */
+    case 0: /* { dg-message "previously used here" } */
     case 1:
     case 0: ; /* { dg-error "duplicate case value" } */
     }
@@ -60,11 +60,11 @@ f (int a, double d, void *p)
      }
    switch (a)
      {
-     case 0: /* { dg-error "this is the first entry overlapping that value" } 
*/
+     case 0: /* { dg-message "this is the first entry overlapping that value" 
} */
      case -1 ... 1: /* { dg-error "duplicate \\(or overlapping\\) case value" 
} */
-     case 2 ... 3: /* { dg-error "previously used here" } */
+     case 2 ... 3: /* { dg-message "previously used here" } */
      case 2: /* { dg-error "duplicate case value" } */
-     case 4 ... 7: /* { dg-error "this is the first entry overlapping that 
value" } */
+     case 4 ... 7: /* { dg-message "this is the first entry overlapping that 
value" } */
      case 6 ... 9: ; /* { dg-error "duplicate \\(or overlapping\\) case value" 
} */
      }
    switch (a)

        Marek

Reply via email to