diff options
author | Richard Henderson <rth@redhat.com> | 2001-12-23 20:00:51 -0800 |
---|---|---|
committer | Richard Henderson <rth@gcc.gnu.org> | 2001-12-23 20:00:51 -0800 |
commit | 99407cf2f159e6b4a86135b0cb48e76a9cfaee05 (patch) | |
tree | 5cf83b6a99fa1dd1a67e4f678cb00231510430c5 /gcc | |
parent | 8aad1777878d187d2b1607efc8f96139f9a4613c (diff) | |
download | gcc-99407cf2f159e6b4a86135b0cb48e76a9cfaee05.zip gcc-99407cf2f159e6b4a86135b0cb48e76a9cfaee05.tar.gz gcc-99407cf2f159e6b4a86135b0cb48e76a9cfaee05.tar.bz2 |
* config/alpha/alpha.c (call_operand) [OSF]: Disallow virtual regs.
From-SVN: r48297
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 2 | ||||
-rw-r--r-- | gcc/config/alpha/alpha.c | 7 |
2 files changed, 8 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 8ea8d35..9082c2b 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,7 @@ 2001-12-23 Richard Henderson <rth@redhat.com> + * config/alpha/alpha.c (call_operand) [OSF]: Disallow virtual regs. + * config/alpha/alpha.md (UNSPEC_SIBCALL): New. (sibcall, sibcall_value, sibcall_osf_1_er, sibcall_osf_1): Use it. (sibcall_value_osf_1_er, sibcall_value_osf_1): Likewise. diff --git a/gcc/config/alpha/alpha.c b/gcc/config/alpha/alpha.c index ce5b58e..a88f977 100644 --- a/gcc/config/alpha/alpha.c +++ b/gcc/config/alpha/alpha.c @@ -1008,7 +1008,12 @@ call_operand (op, mode) if (GET_CODE (op) == REG) { if (TARGET_ABI_OSF) - return (REGNO (op) == 27 || REGNO (op) >= FIRST_PSEUDO_REGISTER); + { + /* Disallow virtual registers to cope with pathalogical test cases + such as compile/930117-1.c in which the virtual reg decomposes + to the frame pointer. Which is a hard reg that is not $27. */ + return (REGNO (op) == 27 || REGNO (op) > LAST_VIRTUAL_REGISTER); + } else return 1; } |