* PATCH to fix fallout from recent C++ bool changes
@ 2016-09-22 14:27 Marek Polacek
2016-09-23 14:37 ` Jason Merrill
0 siblings, 1 reply; 2+ messages in thread
From: Marek Polacek @ 2016-09-22 14:27 UTC (permalink / raw)
To: GCC Patches, Jason Merrill
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
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: PATCH to fix fallout from recent C++ bool changes
2016-09-22 14:27 PATCH to fix fallout from recent C++ bool changes Marek Polacek
@ 2016-09-23 14:37 ` Jason Merrill
0 siblings, 0 replies; 2+ messages in thread
From: Jason Merrill @ 2016-09-23 14:37 UTC (permalink / raw)
To: Marek Polacek; +Cc: GCC Patches
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
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2016-09-23 14:34 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-09-22 14:27 PATCH to fix fallout from recent C++ bool changes Marek Polacek
2016-09-23 14:37 ` Jason Merrill
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).