From 6ee52ba21a119c1cafc9b704ff2db43e0547ac85 Mon Sep 17 00:00:00 2001 From: aoliva Date: Tue, 3 May 2005 17:00:59 +0000 Subject: [PATCH] gcc/ChangeLog: 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 | 6 ++++++ gcc/config/i386/i386.h | 14 +++++++++++--- gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/gcc.target/i386/asm-1.c | 9 +++++++++ 4 files changed, 31 insertions(+), 3 deletions(-) create mode 100644 gcc/testsuite/gcc.target/i386/asm-1.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index defdebb2817..b768b2dc078 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2005-05-03 Alexandre Oliva + + PR target/16888 + * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Clear reg names + for unavailable registers. + 2005-05-03 Kazu Hirata * tree-cfg.c (tree_forwarder_block_p): Fix a typo. diff --git a/gcc/config/i386/i386.h b/gcc/config/i386/i386.h index 4ad8e2e4e12..d65ce49a4c5 100644 --- a/gcc/config/i386/i386.h +++ b/gcc/config/i386/i386.h @@ -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) diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 41fd4985d13..53428bf67ac 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2005-05-03 Alexandre Oliva + + PR target/16888 + * gcc.target/i386/asm-1.c: New test. + 2005-05-03 Jakub Jelinek 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 index 00000000000..63e7af78c63 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/asm-1.c @@ -0,0 +1,9 @@ +/* { dg-do compile } */ +/* { dg-options "-m32" } */ + +register unsigned int EAX asm ("r14"); /* { dg-error "register name" } */ + +void foo () +{ + EAX = 0; +} -- 2.11.0