re PR middle-end/18160 (ICE on taking register variable address)
authorAdam Nemet <anemet@lnxw.com>
Thu, 28 Oct 2004 19:31:25 +0000 (19:31 +0000)
committerAdam Nemet <nemet@gcc.gnu.org>
Thu, 28 Oct 2004 19:31:25 +0000 (19:31 +0000)
PR middle-end/18160
* gcc.dg/register-var-1.c: New test.
* gcc.dg/register-var-2.c: New test.
* gcc.dg/asm-7.c: Taking the address of a register variable is an
error now.

From-SVN: r89773

gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/asm-7.c
gcc/testsuite/gcc.dg/register-var-1.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/register-var-2.c [new file with mode: 0644]

index 32e1b08078c0c1bbe495eaadf236eed110beaaa7..7b1378a661b3bb71eb5925c94e3103928306a603 100644 (file)
@@ -1,3 +1,11 @@
+2004-10-28  Adam Nemet  <anemet@lnxw.com>
+
+       PR middle-end/18160  
+       * gcc.dg/register-var-1.c: New test.
+       * gcc.dg/register-var-2.c: New test.
+       * gcc.dg/asm-7.c: Taking the address of a register variable is an
+       error now.
+
 2004-10-28  Dorit Naishlos <dorit@il.ibm.com>
 
        PR other/18172
index a14bb807369341c5f817e38e2eb218b9dfa90606..65b0353fe46bf20733fbfb0930889125f1b00b7e 100644 (file)
@@ -9,7 +9,7 @@ void test(void)
   static int m;
   int *p;
 
-  __asm__ ("" : : "m"(r));     /* { dg-warning "address of register" } */
+  __asm__ ("" : : "m"(r));     /* { dg-error "" } */
   __asm__ ("" : : "m"(i));
   __asm__ ("" : : "m"(m));
   __asm__ ("" : : "m"(0));     /* { dg-error "" } */
@@ -22,7 +22,7 @@ void test(void)
   __asm__ ("" : : "g"(0));
   __asm__ ("" : : "g"(i+1));
 
-  __asm__ ("" : "=m"(r2));     /* { dg-warning "address of register" } */
+  __asm__ ("" : "=m"(r2));     /* { dg-error "" } */
   __asm__ ("" : "=m"(i));
   __asm__ ("" : "=m"(m));
 }
diff --git a/gcc/testsuite/gcc.dg/register-var-1.c b/gcc/testsuite/gcc.dg/register-var-1.c
new file mode 100644 (file)
index 0000000..6869b03
--- /dev/null
@@ -0,0 +1,14 @@
+/* PR/18160 */
+
+/* { dg-do compile { target i?86-*-* } } */
+
+/* This should yield an error even without -pedantic.  */
+/* { dg-options "-ansi" } */
+
+void g(int *);
+
+void f(void) 
+{ 
+  register int x __asm ("eax");
+  g(&x);       /* { dg-error "error: address of register variable" } */
+} 
diff --git a/gcc/testsuite/gcc.dg/register-var-2.c b/gcc/testsuite/gcc.dg/register-var-2.c
new file mode 100644 (file)
index 0000000..585dfe2
--- /dev/null
@@ -0,0 +1,14 @@
+/* PR/18160 */
+
+/* { dg-do compile } */
+
+/* This should yield an error even without -pedantic.  */
+/* { dg-options "-ansi" } */
+
+void g(int *);
+
+void f(void) 
+{ 
+  register int x;
+  g(&x);       /* { dg-error "error: address of register variable" } */
+}