On Fri, Sep 30, 2016 at 05:32:31PM -0400, Jason Merrill wrote:
> On Fri, Sep 30, 2016 at 4:10 AM, Jakub Jelinek <ja...@redhat.com> wrote:
> > On Thu, Sep 29, 2016 at 10:57:07PM +0000, Joseph Myers wrote:
> >> This is missing documentation of the new -Wregister option in invoke.texi.
> >
> > While I had it in my head when working on the patch, I forgot to do that in 
> > the end.
> > Fixed thusly, ok for trunk?
> 
> OK.  But also, the patch has introduced several check-c++1z failures:
> 
> > FAIL: g++.dg/charset/asm2.c  -std=c++1z (test for excess errors)
> > FAIL: g++.dg/ext/asm3.C  -std=c++1z (test for excess errors)
> > FAIL: g++.dg/tls/diag-2.C  -std=c++1z (test for excess errors)
> > FAIL: g++.dg/tls/diag-4.C  -std=c++1z (test for excess errors)
> > FAIL: g++.old-deja/g++.brendan/warnings4.C  -std=c++1z (test for excess 
> > errors)
> > FAIL: g++.old-deja/g++.eh/ia64-1.C  -std=gnu++1z (test for excess errors)
> > FAIL: g++.old-deja/g++.jason/enum3.C  -std=gnu++1z (test for excess errors)
> > FAIL: g++.old-deja/g++.mike/net31.C  -std=c++1z (test for excess errors)
> > FAIL: g++.old-deja/g++.mike/p700.C  -std=gnu++1z (test for excess errors)
> > FAIL: g++.old-deja/g++.other/regstack.C  -std=gnu++1z (test for excess 
> > errors)

Oops, I've been planning to do check-c++-all after the bootstrap/regtest,
but apparently forgot to do that in the end.

The following patch should fix that, ok for trunk?

2016-10-01  Jakub Jelinek  <ja...@redhat.com>

        * g++.dg/ext/asm3.C (two): Only use register keyword for C++14 and
        earlier.
        * g++.dg/charset/asm2.c (memmove): Likewise.
        * g++.dg/tls/diag-2.C (foo): Expect -Wregister error for C++17.
        * g++.dg/tls/diag-4.C (foo): Likewise.
        * c-c++-common/vector-subscript-2.c (vf): Change dg-error to
        dg-warning, fix up regex.
        * g++.old-deja/g++.brendan/warnings4.C: Limit to c++14_down targets.
        * g++.old-deja/g++.mike/p700.C: Add -Wno-register.
        * g++.old-deja/g++.mike/net31.C: Likewise.
        * g++.old-deja/g++.other/regstack.C (foo): Expect -Wregister warning
        for C++17.
        * g++.old-deja/g++.jason/enum3.C: Add -Wno-register.
        * g++.old-deja/g++.eh/ia64-1.C: Likewise.
        
--- gcc/testsuite/g++.dg/ext/asm3.C.jj  2014-09-25 15:02:34.000000000 +0200
+++ gcc/testsuite/g++.dg/ext/asm3.C     2016-10-01 01:00:53.107415429 +0200
@@ -7,9 +7,12 @@
 
 int two(int in)
 {
-  register int out;
+#if __cplusplus <= 201402L
+  register
+#endif
+  int out;
   __asm__ ("" : "r" (out) : "r" (in));
   return out;
 }
 
-// { dg-message "error:" "" { target *-*-* } 11 }
+// { dg-message "error:" "" { target *-*-* } 14 }
--- gcc/testsuite/g++.dg/charset/asm2.c.jj      2014-09-25 15:02:36.000000000 
+0200
+++ gcc/testsuite/g++.dg/charset/asm2.c 2016-10-01 00:58:59.594839475 +0200
@@ -10,7 +10,10 @@
 void *
 memmove (void *__dest, __const void *__src, size_t __n)
 {
-  register unsigned long int __d0, __d1, __d2;
+#if __cplusplus <= 201402L
+  register
+#endif
+  unsigned long int __d0, __d1, __d2;
   if (__dest < __src)
     __asm__ __volatile__
       ("cld\n\t"
--- gcc/testsuite/g++.dg/tls/diag-2.C.jj        2014-09-25 15:02:36.000000000 
+0200
+++ gcc/testsuite/g++.dg/tls/diag-2.C   2016-10-01 01:03:03.002785384 +0200
@@ -12,7 +12,7 @@ void foo()
   auto __thread int l2;                /* { dg-error "multiple storage 
classes|data types" } */
   __thread extern int l3;      /* { dg-error "'__thread' before 'extern'" } */
   register __thread int l4;    /* { dg-error "multiple storage classes" } */
-}
+}                              /* { dg-error "ISO C\\+\\+1z does not allow 
'register' storage class specifier" "" { target c++1z } .-1 } */
 
 __thread void f1 ();           /* { dg-error "invalid for function" } */
 extern __thread void f2 ();    /* { dg-error "invalid for function" } */
--- gcc/testsuite/g++.dg/tls/diag-4.C.jj        2014-09-25 15:02:36.000000000 
+0200
+++ gcc/testsuite/g++.dg/tls/diag-4.C   2016-10-01 01:03:28.986458585 +0200
@@ -7,4 +7,4 @@ void foo()
 {
   __thread auto int l2;                /* { dg-error "multiple storage 
classes|data types" } */
   __thread register int l4;    /* { dg-error "multiple storage classes" } */
-}
+}                              /* { dg-error "ISO C\\+\\+1z does not allow 
'register' storage class specifier" "" { target c++1z } .-1 } */
--- gcc/testsuite/c-c++-common/vector-subscript-2.c.jj  2016-09-30 
18:40:58.335979346 +0200
+++ gcc/testsuite/c-c++-common/vector-subscript-2.c     2016-10-01 
01:22:19.577245968 +0200
@@ -7,6 +7,6 @@
 
 float vf(int i)
 {
-  register vector float a;     // { dg-error "ISO C++1z does not allow 
'register' storage class specifier" "" { target c++1z } }
+  register vector float a;     // { dg-warning "ISO C\\+\\+1z does not allow 
'register' storage class specifier" "" { target c++1z } }
   return a[0];
 }
--- gcc/testsuite/g++.old-deja/g++.brendan/warnings4.C.jj       2014-09-25 
15:02:10.000000000 +0200
+++ gcc/testsuite/g++.old-deja/g++.brendan/warnings4.C  2016-10-01 
01:05:18.605079901 +0200
@@ -1,4 +1,4 @@
-// { dg-do assemble  }
+// { dg-do assemble { target c++14_down } }
 // GROUPS passed warnings
 int
 main ()
--- gcc/testsuite/g++.old-deja/g++.mike/p700.C.jj       2014-09-25 
15:02:12.000000000 +0200
+++ gcc/testsuite/g++.old-deja/g++.mike/p700.C  2016-10-01 01:07:48.797190919 
+0200
@@ -1,5 +1,5 @@
 // { dg-do assemble  }
-// { dg-options "-Wno-deprecated" }
+// { dg-options "-Wno-deprecated -Wno-register" }
 // { dg-error "limited range of data type" "16-bit target" { target 
xstormy16-*-* } 0 }
 // prms-id: 700
 
--- gcc/testsuite/g++.old-deja/g++.mike/net31.C.jj      2014-09-25 
15:02:12.000000000 +0200
+++ gcc/testsuite/g++.old-deja/g++.mike/net31.C 2016-10-01 01:07:18.519571724 
+0200
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-additional-options "-Wno-register" }
 
 class foo_a {
   protected:
--- gcc/testsuite/g++.old-deja/g++.other/regstack.C.jj  2014-09-25 
15:02:11.000000000 +0200
+++ gcc/testsuite/g++.old-deja/g++.other/regstack.C     2016-10-01 
01:08:49.143431939 +0200
@@ -3,7 +3,7 @@
 
 inline double foo (double x)
 {
-  register double r;
+  register double r;   // { dg-warning "ISO C\\+\\+1z does not allow 
'register' storage class specifier" "" { target c++1z } }
   asm volatile ("fsqrt" : "=t" (r) : "0" (x));
   return r;
 }
--- gcc/testsuite/g++.old-deja/g++.jason/enum3.C.jj     2014-09-25 
15:02:11.000000000 +0200
+++ gcc/testsuite/g++.old-deja/g++.jason/enum3.C        2016-10-01 
01:06:40.341051899 +0200
@@ -1,5 +1,5 @@
 // { dg-do assemble  }
-// { dg-options "-Wall" }
+// { dg-options "-Wall -Wno-register" }
 
 enum tristate { no = -1, maybe, yes };
 
--- gcc/testsuite/g++.old-deja/g++.eh/ia64-1.C.jj       2014-09-25 
15:02:12.000000000 +0200
+++ gcc/testsuite/g++.old-deja/g++.eh/ia64-1.C  2016-10-01 01:06:07.790461291 
+0200
@@ -1,5 +1,5 @@
 // { dg-do run  }
-// { dg-options "-O2" }
+// { dg-options "-O2 -Wno-register" }
 
 #include <exception>
 


        Jakub

Reply via email to