]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR target/45296 (register long double ICE at -O2, -Os, -O3)
authorUros Bizjak <ubizjak@gmail.com>
Tue, 17 Aug 2010 14:25:52 +0000 (16:25 +0200)
committerUros Bizjak <uros@gcc.gnu.org>
Tue, 17 Aug 2010 14:25:52 +0000 (16:25 +0200)
PR target/45296
* reginfo.c (globalize_reg): Reject stack registers.

testsuite/ChangeLog:

PR target/45296
* gcc.target/i386/pr45296.c: New test.

From-SVN: r163307

gcc/ChangeLog
gcc/reginfo.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/i386/pr45296.c [new file with mode: 0644]

index d8cfcc16bedb1f3fbd7d47ab2a2653b0e6199729..a6321eefddf7d4420136195b4854fc4aec8329a3 100644 (file)
@@ -1,3 +1,8 @@
+2010-08-17  Uros Bizjak  <ubizjak@gmail.com>
+
+       PR target/45296
+       * reginfo.c (globalize_reg): Reject stack registers.
+
 2010-08-16  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
 
        Backport from mainline:
index f9340ebb6b09bfa9b94d2077045accb9723556b5..ed6373a3cd0546bf1956421c12d9de8f1d48fb45 100644 (file)
@@ -842,6 +842,14 @@ fix_register (const char *name, int fixed, int call_used)
 void
 globalize_reg (int i)
 {
+#ifdef STACK_REGS
+  if (IN_RANGE (i, FIRST_STACK_REG, LAST_STACK_REG))
+    {
+      error ("stack register used for global register variable");
+      return;
+    }
+#endif
+
   if (fixed_regs[i] == 0 && no_global_reg_vars)
     error ("global register variable follows a function definition");
 
index d52e206252cdbbc16b31568231eeaf528d4cbc34..e757f52279809c2ff8d295e30af8e94cdd8123df 100644 (file)
@@ -1,3 +1,8 @@
+2010-08-17  Uros Bizjak  <ubizjak@gmail.com>
+
+       PR target/45296
+       * gcc.target/i386/pr45296.c: New test.
+
 2010-08-15  Uros Bizjak  <ubizjak@gmail.com>
 
        * g++.dg/cast.C: Change fields of structures to "long" to pass
diff --git a/gcc/testsuite/gcc.target/i386/pr45296.c b/gcc/testsuite/gcc.target/i386/pr45296.c
new file mode 100644 (file)
index 0000000..307ee01
--- /dev/null
@@ -0,0 +1,4 @@
+/* { dg-do compile } */
+/* { dg-options "" } */
+
+register long double F80 asm("st"); /* { dg-error "stack register" } */