OSDN Git Service

gcc/ChangeLog:
authoraoliva <aoliva@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 3 May 2005 17:00:59 +0000 (17:00 +0000)
committeraoliva <aoliva@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 3 May 2005 17:00:59 +0000 (17:00 +0000)
PR target/16888
* config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Clear reg names
for unavailable registers.
gcc/testsuite/ChangeLog:
PR target/16888
* gcc.target/i386/asm-1.c: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@99167 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/config/i386/i386.h
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/i386/asm-1.c [new file with mode: 0644]

index defdebb..b768b2d 100644 (file)
@@ -1,3 +1,9 @@
+2005-05-03  Alexandre Oliva  <aoliva@redhat.com>
+
+       PR target/16888
+       * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Clear reg names
+       for unavailable registers.
+
 2005-05-03  Kazu Hirata  <kazu@cs.umass.edu>
 
        * tree-cfg.c (tree_forwarder_block_p): Fix a typo.
index 4ad8e2e..d65ce49 100644 (file)
@@ -780,14 +780,14 @@ do {                                                                      \
        int i;                                                          \
         for (i = 0; i < FIRST_PSEUDO_REGISTER; i++)                    \
           if (TEST_HARD_REG_BIT (reg_class_contents[(int)MMX_REGS], i))        \
-           fixed_regs[i] = call_used_regs[i] = 1;                      \
+           fixed_regs[i] = call_used_regs[i] = 1, reg_names[i] = "";   \
       }                                                                        \
     if (! TARGET_SSE)                                                  \
       {                                                                        \
        int i;                                                          \
         for (i = 0; i < FIRST_PSEUDO_REGISTER; i++)                    \
           if (TEST_HARD_REG_BIT (reg_class_contents[(int)SSE_REGS], i))        \
-           fixed_regs[i] = call_used_regs[i] = 1;                      \
+           fixed_regs[i] = call_used_regs[i] = 1, reg_names[i] = "";   \
       }                                                                        \
     if (! TARGET_80387 && ! TARGET_FLOAT_RETURNS_IN_80387)             \
       {                                                                        \
@@ -796,7 +796,15 @@ do {                                                                       \
         COPY_HARD_REG_SET (x, reg_class_contents[(int)FLOAT_REGS]);    \
         for (i = 0; i < FIRST_PSEUDO_REGISTER; i++)                    \
           if (TEST_HARD_REG_BIT (x, i))                                \
-           fixed_regs[i] = call_used_regs[i] = 1;                      \
+           fixed_regs[i] = call_used_regs[i] = 1, reg_names[i] = "";   \
+      }                                                                        \
+    if (! TARGET_64BIT)                                                        \
+      {                                                                        \
+       int i;                                                          \
+       for (i = FIRST_REX_INT_REG; i <= LAST_REX_INT_REG; i++)         \
+         reg_names[i] = "";                                            \
+       for (i = FIRST_REX_SSE_REG; i <= LAST_REX_SSE_REG; i++)         \
+         reg_names[i] = "";                                            \
       }                                                                        \
   } while (0)
 
index 41fd498..53428bf 100644 (file)
@@ -1,3 +1,8 @@
+2005-05-03  Alexandre Oliva  <aoliva@redhat.com>
+
+       PR target/16888
+       * gcc.target/i386/asm-1.c: New test.
+
 2005-05-03  Jakub Jelinek  <jakub@redhat.com>
 
        PR rtl-optimization/21330
diff --git a/gcc/testsuite/gcc.target/i386/asm-1.c b/gcc/testsuite/gcc.target/i386/asm-1.c
new file mode 100644 (file)
index 0000000..63e7af7
--- /dev/null
@@ -0,0 +1,9 @@
+/* { dg-do compile } */
+/* { dg-options "-m32" } */
+
+register unsigned int EAX asm ("r14"); /* { dg-error "register name" } */
+
+void foo ()
+{
+  EAX = 0;
+}