This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
PATCH to fix fallout from recent C++ bool changes
- From: Marek Polacek <polacek at redhat dot com>
- To: GCC Patches <gcc-patches at gcc dot gnu dot org>, Jason Merrill <jason at redhat dot com>
- Date: Thu, 22 Sep 2016 16:24:16 +0200
- Subject: PATCH to fix fallout from recent C++ bool changes
- Authentication-results: sourceware.org; auth=none
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