diff mbox

PATCH to fix fallout from recent C++ bool changes

Message ID 20160922142416.GU19950@redhat.com
State New
Headers show

Commit Message

Marek Polacek Sept. 22, 2016, 2:24 p.m. UTC
Jason reported that make check-c++1z reveals some fallout
because we now reject bool++ in C++1z:
https://gcc.gnu.org/ml/gcc-patches/2016-09/msg01460.html

I hope this patch fixes all of it.

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

2016-09-22  Marek Polacek  <polacek@redhat.com>

	* c-c++-common/gomp/atomic-12.c: Skip for C++1z.
	* c-c++-common/gomp/atomic-13.c: Likewise.
	* c-c++-common/gomp/atomic-14.c: Likewise.
	* c-c++-common/pr60439.c: Remove invalid code.
	* g++.dg/expr/bitfield4.C: Robustify for C++1z.
	* g++.dg/expr/bitfield5.C: Likewise.
	* g++.dg/expr/bitfield6.C: Likewise.
	* g++.dg/expr/bool1.C: Likewise.
	* g++.dg/expr/bool3.C: Likewise.
	* g++.dg/expr/lval3.C: Likewise.
	* g++.dg/expr/lval4.C: Likewise.
	* g++.old-deja/g++.jason/bool5.C: Likewise.


	Marek

Comments

Jason Merrill Sept. 23, 2016, 2:33 p.m. UTC | #1
OK, thanks.

On Thu, Sep 22, 2016 at 10:24 AM, Marek Polacek <polacek@redhat.com> wrote:
> Jason reported that make check-c++1z reveals some fallout
> because we now reject bool++ in C++1z:
> https://gcc.gnu.org/ml/gcc-patches/2016-09/msg01460.html
>
> I hope this patch fixes all of it.
>
> Bootstrapped/regtested on x86_64-linux, ok for trunk?
>
> 2016-09-22  Marek Polacek  <polacek@redhat.com>
>
>         * c-c++-common/gomp/atomic-12.c: Skip for C++1z.
>         * c-c++-common/gomp/atomic-13.c: Likewise.
>         * c-c++-common/gomp/atomic-14.c: Likewise.
>         * c-c++-common/pr60439.c: Remove invalid code.
>         * g++.dg/expr/bitfield4.C: Robustify for C++1z.
>         * g++.dg/expr/bitfield5.C: Likewise.
>         * g++.dg/expr/bitfield6.C: Likewise.
>         * g++.dg/expr/bool1.C: Likewise.
>         * g++.dg/expr/bool3.C: Likewise.
>         * g++.dg/expr/lval3.C: Likewise.
>         * g++.dg/expr/lval4.C: Likewise.
>         * g++.old-deja/g++.jason/bool5.C: Likewise.
>
> diff --git gcc/testsuite/c-c++-common/gomp/atomic-12.c gcc/testsuite/c-c++-common/gomp/atomic-12.c
> index e9ca650..07790d9 100644
> --- gcc/testsuite/c-c++-common/gomp/atomic-12.c
> +++ gcc/testsuite/c-c++-common/gomp/atomic-12.c
> @@ -4,6 +4,7 @@
>  /* atomicvar should never be referenced in between the barrier and
>     following #pragma omp atomic_load.  */
>  /* { dg-final { scan-tree-dump-not "barrier\[^#\]*atomicvar" "gimple" } } */
> +/* { dg-skip-if "invalid in C++1z" { c++1z } } */
>
>  #ifdef __cplusplus
>  bool atomicvar, c;
> diff --git gcc/testsuite/c-c++-common/gomp/atomic-13.c gcc/testsuite/c-c++-common/gomp/atomic-13.c
> index 7f4afcf..83c6560 100644
> --- gcc/testsuite/c-c++-common/gomp/atomic-13.c
> +++ gcc/testsuite/c-c++-common/gomp/atomic-13.c
> @@ -4,5 +4,6 @@
>  /* atomicvar should never be referenced in between the barrier and
>     following #pragma omp atomic_load.  */
>  /* { dg-final { scan-tree-dump-not "barrier\[^#\]*atomicvar" "gimple" } } */
> +/* { dg-skip-if "invalid in C++1z" { c++1z } } */
>
>  #include "atomic-12.c"
> diff --git gcc/testsuite/c-c++-common/gomp/atomic-14.c gcc/testsuite/c-c++-common/gomp/atomic-14.c
> index 7e23453..f2dd9fc 100644
> --- gcc/testsuite/c-c++-common/gomp/atomic-14.c
> +++ gcc/testsuite/c-c++-common/gomp/atomic-14.c
> @@ -1,6 +1,7 @@
>  /* PR middle-end/45423 */
>  /* { dg-do compile } */
>  /* { dg-options "-fopenmp -Wno-deprecated" } */
> +/* { dg-skip-if "invalid in C++1z" { c++1z } } */
>
>  #ifdef __cplusplus
>  bool *baz ();
> diff --git gcc/testsuite/c-c++-common/pr60439.c gcc/testsuite/c-c++-common/pr60439.c
> index 71b397a..dc12d1f 100644
> --- gcc/testsuite/c-c++-common/pr60439.c
> +++ gcc/testsuite/c-c++-common/pr60439.c
> @@ -131,12 +131,6 @@ f6 (bool b)
>      case 3:
>        break;
>      }
> -  switch (b++) /* { dg-warning "switch condition has" } */
> -  /* { dg-warning "is deprecated" "" { target c++ } 134 } */
> -    {
> -    case 3:
> -      break;
> -    }
>  }
>
>  void
> diff --git gcc/testsuite/g++.dg/expr/bitfield4.C gcc/testsuite/g++.dg/expr/bitfield4.C
> index 7fae086..97a1fe9 100644
> --- gcc/testsuite/g++.dg/expr/bitfield4.C
> +++ gcc/testsuite/g++.dg/expr/bitfield4.C
> @@ -14,6 +14,8 @@ template <>
>  void f(bool) {}
>
>  int main() {
> -  f(s.x++); // { dg-warning "deprecated" }
> -  f(++s.x); // { dg-warning "deprecated" }
> +  f(s.x++); // { dg-warning "deprecated" "" { target { ! c++1z } } }
> +  // { dg-error "forbidden" "" { target c++1z } 17 }
> +  f(++s.x); // { dg-warning "deprecated" "" { target { ! c++1z } } }
> +  // { dg-error "forbidden" "" { target c++1z } 19 }
>  }
> diff --git gcc/testsuite/g++.dg/expr/bitfield5.C gcc/testsuite/g++.dg/expr/bitfield5.C
> index 0a37f9f..bba35cb 100644
> --- gcc/testsuite/g++.dg/expr/bitfield5.C
> +++ gcc/testsuite/g++.dg/expr/bitfield5.C
> @@ -8,10 +8,12 @@ struct S {
>  S s;
>
>  int main() {
> -  s.x++; // { dg-warning "deprecated" }
> +  s.x++; // { dg-warning "deprecated" "" { target { ! c++1z } } }
> +  // { dg-error "forbidden" "" { target c++1z } 11 }
>    if (s.x != 1)
>      return 1;
> -  ++s.x; // { dg-warning "deprecated" }
> +  ++s.x; // { dg-warning "deprecated" "" { target { ! c++1z } } }
> +  // { dg-error "forbidden" "" { target c++1z } 15 }
>    if (s.x != 1)
>      return 2;
>  }
> diff --git gcc/testsuite/g++.dg/expr/bitfield6.C gcc/testsuite/g++.dg/expr/bitfield6.C
> index 8523866..202c246 100644
> --- gcc/testsuite/g++.dg/expr/bitfield6.C
> +++ gcc/testsuite/g++.dg/expr/bitfield6.C
> @@ -7,5 +7,6 @@ struct S {
>  S s;
>
>  void f() {
> -  ++s.x = false; // { dg-warning "deprecated" }
> +  ++s.x = false; // { dg-warning "deprecated" "" { target { ! c++1z } } }
> +  // { dg-error "forbidden" "" { target c++1z } 10 }
>  }
> diff --git gcc/testsuite/g++.dg/expr/bool1.C gcc/testsuite/g++.dg/expr/bool1.C
> index 503e8b4..4ecc6ac 100644
> --- gcc/testsuite/g++.dg/expr/bool1.C
> +++ gcc/testsuite/g++.dg/expr/bool1.C
> @@ -10,8 +10,10 @@ int main()
>    my_bool b = false;
>    int i;
>
> -  b++; // { dg-warning "deprecated" }
> -  b++; // { dg-warning "deprecated" }
> +  b++; // { dg-warning "deprecated" "" { target { ! c++1z } } }
> +  // { dg-error "forbidden" "" { target c++1z } 13 }
> +  b++; // { dg-warning "deprecated" "" { target { ! c++1z } } }
> +  // { dg-error "forbidden" "" { target c++1z } 15 }
>    i = b;
>    if (i != 1)
>      abort ();
> diff --git gcc/testsuite/g++.dg/expr/bool3.C gcc/testsuite/g++.dg/expr/bool3.C
> index 1866ed4..cfc9da3 100644
> --- gcc/testsuite/g++.dg/expr/bool3.C
> +++ gcc/testsuite/g++.dg/expr/bool3.C
> @@ -10,8 +10,10 @@ int main()
>    my_bool b = false;
>    int i;
>
> -  b++; // { dg-warning "deprecated" }
> -  b++; // { dg-warning "deprecated" }
> +  b++; // { dg-warning "deprecated" "" { target { ! c++1z } } }
> +  // { dg-error "forbidden" "" { target c++1z } 13 }
> +  b++; // { dg-warning "deprecated" "" { target { ! c++1z } } }
> +  // { dg-error "forbidden" "" { target c++1z } 15 }
>    i = b;
>    if (i != 1)
>      abort ();
> diff --git gcc/testsuite/g++.dg/expr/lval3.C gcc/testsuite/g++.dg/expr/lval3.C
> index 8e0aead..4011441 100644
> --- gcc/testsuite/g++.dg/expr/lval3.C
> +++ gcc/testsuite/g++.dg/expr/lval3.C
> @@ -4,7 +4,5 @@ f()
>  {
>    bool i = 0;
>    i++ = 3; // { dg-error "" }
> -  // { dg-warning "deprecated" "" { target *-*-* } 6 }
> +  // { dg-warning "deprecated" "" { target { ! c++1z } } 6 }
>  }
> -
> -
> diff --git gcc/testsuite/g++.dg/expr/lval4.C gcc/testsuite/g++.dg/expr/lval4.C
> index b903ec8..c012dd3 100644
> --- gcc/testsuite/g++.dg/expr/lval4.C
> +++ gcc/testsuite/g++.dg/expr/lval4.C
> @@ -4,7 +4,6 @@ f()
>  {
>    bool i = 0;
>    ++i = 3;
> -  // { dg-warning "deprecated" "" { target *-*-* } 6 }
> +  // { dg-warning "deprecated" "" { target { ! c++1z } } 6 }
> +  // { dg-error "forbidden" "" { target c++1z } 6 }
>  }
> -
> -
> diff --git gcc/testsuite/g++.old-deja/g++.jason/bool5.C gcc/testsuite/g++.old-deja/g++.jason/bool5.C
> index 0a16ccb..49126ac 100644
> --- gcc/testsuite/g++.old-deja/g++.jason/bool5.C
> +++ gcc/testsuite/g++.old-deja/g++.jason/bool5.C
> @@ -2,10 +2,12 @@
>  int main ()
>  {
>    bool b = false;
> -  int i = b++; // { dg-warning "deprecated" }
> +  int i = b++; // { dg-warning "deprecated" "" { target { ! c++1z } } }
> +  // { dg-error "forbidden" "" { target c++1z } 5 }
>    if (i != false || b != true)
>      return 1;
> -  i = b++; // { dg-warning "deprecated" }
> +  i = b++; // { dg-warning "deprecated" "" { target { ! c++1z } } }
> +  // { dg-error "forbidden" "" { target c++1z } 9 }
>    if (i != true || b != true)
>      return 1;
>  }
>
>         Marek
diff mbox

Patch

diff --git gcc/testsuite/c-c++-common/gomp/atomic-12.c gcc/testsuite/c-c++-common/gomp/atomic-12.c
index e9ca650..07790d9 100644
--- gcc/testsuite/c-c++-common/gomp/atomic-12.c
+++ gcc/testsuite/c-c++-common/gomp/atomic-12.c
@@ -4,6 +4,7 @@ 
 /* atomicvar should never be referenced in between the barrier and
    following #pragma omp atomic_load.  */
 /* { dg-final { scan-tree-dump-not "barrier\[^#\]*atomicvar" "gimple" } } */
+/* { dg-skip-if "invalid in C++1z" { c++1z } } */
 
 #ifdef __cplusplus
 bool atomicvar, c;
diff --git gcc/testsuite/c-c++-common/gomp/atomic-13.c gcc/testsuite/c-c++-common/gomp/atomic-13.c
index 7f4afcf..83c6560 100644
--- gcc/testsuite/c-c++-common/gomp/atomic-13.c
+++ gcc/testsuite/c-c++-common/gomp/atomic-13.c
@@ -4,5 +4,6 @@ 
 /* atomicvar should never be referenced in between the barrier and
    following #pragma omp atomic_load.  */
 /* { dg-final { scan-tree-dump-not "barrier\[^#\]*atomicvar" "gimple" } } */
+/* { dg-skip-if "invalid in C++1z" { c++1z } } */
 
 #include "atomic-12.c"
diff --git gcc/testsuite/c-c++-common/gomp/atomic-14.c gcc/testsuite/c-c++-common/gomp/atomic-14.c
index 7e23453..f2dd9fc 100644
--- gcc/testsuite/c-c++-common/gomp/atomic-14.c
+++ gcc/testsuite/c-c++-common/gomp/atomic-14.c
@@ -1,6 +1,7 @@ 
 /* PR middle-end/45423 */
 /* { dg-do compile } */
 /* { dg-options "-fopenmp -Wno-deprecated" } */
+/* { dg-skip-if "invalid in C++1z" { c++1z } } */
 
 #ifdef __cplusplus
 bool *baz ();
diff --git gcc/testsuite/c-c++-common/pr60439.c gcc/testsuite/c-c++-common/pr60439.c
index 71b397a..dc12d1f 100644
--- gcc/testsuite/c-c++-common/pr60439.c
+++ gcc/testsuite/c-c++-common/pr60439.c
@@ -131,12 +131,6 @@  f6 (bool b)
     case 3:
       break;
     }
-  switch (b++) /* { dg-warning "switch condition has" } */
-  /* { dg-warning "is deprecated" "" { target c++ } 134 } */
-    {
-    case 3:
-      break;
-    }
 }
 
 void
diff --git gcc/testsuite/g++.dg/expr/bitfield4.C gcc/testsuite/g++.dg/expr/bitfield4.C
index 7fae086..97a1fe9 100644
--- gcc/testsuite/g++.dg/expr/bitfield4.C
+++ gcc/testsuite/g++.dg/expr/bitfield4.C
@@ -14,6 +14,8 @@  template <>
 void f(bool) {} 
 
 int main() {
-  f(s.x++); // { dg-warning "deprecated" }
-  f(++s.x); // { dg-warning "deprecated" }
+  f(s.x++); // { dg-warning "deprecated" "" { target { ! c++1z } } }
+  // { dg-error "forbidden" "" { target c++1z } 17 }
+  f(++s.x); // { dg-warning "deprecated" "" { target { ! c++1z } } }
+  // { dg-error "forbidden" "" { target c++1z } 19 }
 }
diff --git gcc/testsuite/g++.dg/expr/bitfield5.C gcc/testsuite/g++.dg/expr/bitfield5.C
index 0a37f9f..bba35cb 100644
--- gcc/testsuite/g++.dg/expr/bitfield5.C
+++ gcc/testsuite/g++.dg/expr/bitfield5.C
@@ -8,10 +8,12 @@  struct S {
 S s;
 
 int main() {
-  s.x++; // { dg-warning "deprecated" }
+  s.x++; // { dg-warning "deprecated" "" { target { ! c++1z } } }
+  // { dg-error "forbidden" "" { target c++1z } 11 }
   if (s.x != 1)
     return 1;
-  ++s.x; // { dg-warning "deprecated" }
+  ++s.x; // { dg-warning "deprecated" "" { target { ! c++1z } } }
+  // { dg-error "forbidden" "" { target c++1z } 15 }
   if (s.x != 1)
     return 2;
 }
diff --git gcc/testsuite/g++.dg/expr/bitfield6.C gcc/testsuite/g++.dg/expr/bitfield6.C
index 8523866..202c246 100644
--- gcc/testsuite/g++.dg/expr/bitfield6.C
+++ gcc/testsuite/g++.dg/expr/bitfield6.C
@@ -7,5 +7,6 @@  struct S {
 S s;
 
 void f() {
-  ++s.x = false; // { dg-warning "deprecated" }
+  ++s.x = false; // { dg-warning "deprecated" "" { target { ! c++1z } } }
+  // { dg-error "forbidden" "" { target c++1z } 10 }
 }
diff --git gcc/testsuite/g++.dg/expr/bool1.C gcc/testsuite/g++.dg/expr/bool1.C
index 503e8b4..4ecc6ac 100644
--- gcc/testsuite/g++.dg/expr/bool1.C
+++ gcc/testsuite/g++.dg/expr/bool1.C
@@ -10,8 +10,10 @@  int main()
   my_bool b = false;
   int i;
 
-  b++; // { dg-warning "deprecated" }
-  b++; // { dg-warning "deprecated" }
+  b++; // { dg-warning "deprecated" "" { target { ! c++1z } } }
+  // { dg-error "forbidden" "" { target c++1z } 13 }
+  b++; // { dg-warning "deprecated" "" { target { ! c++1z } } }
+  // { dg-error "forbidden" "" { target c++1z } 15 }
   i = b;
   if (i != 1)
     abort ();
diff --git gcc/testsuite/g++.dg/expr/bool3.C gcc/testsuite/g++.dg/expr/bool3.C
index 1866ed4..cfc9da3 100644
--- gcc/testsuite/g++.dg/expr/bool3.C
+++ gcc/testsuite/g++.dg/expr/bool3.C
@@ -10,8 +10,10 @@  int main()
   my_bool b = false;
   int i;
 
-  b++; // { dg-warning "deprecated" }
-  b++; // { dg-warning "deprecated" }
+  b++; // { dg-warning "deprecated" "" { target { ! c++1z } } }
+  // { dg-error "forbidden" "" { target c++1z } 13 }
+  b++; // { dg-warning "deprecated" "" { target { ! c++1z } } }
+  // { dg-error "forbidden" "" { target c++1z } 15 }
   i = b;
   if (i != 1)
     abort ();
diff --git gcc/testsuite/g++.dg/expr/lval3.C gcc/testsuite/g++.dg/expr/lval3.C
index 8e0aead..4011441 100644
--- gcc/testsuite/g++.dg/expr/lval3.C
+++ gcc/testsuite/g++.dg/expr/lval3.C
@@ -4,7 +4,5 @@  f()
 {
   bool i = 0;
   i++ = 3; // { dg-error "" }
-  // { dg-warning "deprecated" "" { target *-*-* } 6 }
+  // { dg-warning "deprecated" "" { target { ! c++1z } } 6 }
 }
-
-
diff --git gcc/testsuite/g++.dg/expr/lval4.C gcc/testsuite/g++.dg/expr/lval4.C
index b903ec8..c012dd3 100644
--- gcc/testsuite/g++.dg/expr/lval4.C
+++ gcc/testsuite/g++.dg/expr/lval4.C
@@ -4,7 +4,6 @@  f()
 {
   bool i = 0;
   ++i = 3;
-  // { dg-warning "deprecated" "" { target *-*-* } 6 }
+  // { dg-warning "deprecated" "" { target { ! c++1z } } 6 }
+  // { dg-error "forbidden" "" { target c++1z } 6 }
 }
-
-
diff --git gcc/testsuite/g++.old-deja/g++.jason/bool5.C gcc/testsuite/g++.old-deja/g++.jason/bool5.C
index 0a16ccb..49126ac 100644
--- gcc/testsuite/g++.old-deja/g++.jason/bool5.C
+++ gcc/testsuite/g++.old-deja/g++.jason/bool5.C
@@ -2,10 +2,12 @@ 
 int main ()
 {
   bool b = false;
-  int i = b++; // { dg-warning "deprecated" }
+  int i = b++; // { dg-warning "deprecated" "" { target { ! c++1z } } }
+  // { dg-error "forbidden" "" { target c++1z } 5 }
   if (i != false || b != true)
     return 1;
-  i = b++; // { dg-warning "deprecated" }
+  i = b++; // { dg-warning "deprecated" "" { target { ! c++1z } } }
+  // { dg-error "forbidden" "" { target c++1z } 9 }
   if (i != true || b != true)
     return 1;
 }