aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJim Wilson <wilson@cygnus.com>2000-06-30 01:07:51 +0000
committerJim Wilson <wilson@gcc.gnu.org>2000-06-29 18:07:51 -0700
commitffaff4147a23b15f8282365f81bd15523a25fcad (patch)
tree44c4342bc983f65b09dcf12ae494f684d776a1fc /gcc
parentb6a89402e3816ca52914506de0efeddcb5f248d3 (diff)
downloadgcc-ffaff4147a23b15f8282365f81bd15523a25fcad.zip
gcc-ffaff4147a23b15f8282365f81bd15523a25fcad.tar.gz
gcc-ffaff4147a23b15f8282365f81bd15523a25fcad.tar.bz2
Fix glibc 2.2 build failure.
* config/ia64/ia64.h (PREFERRED_RELOAD_CLASS): Return NO_REGS for a volatile mem and FR_REGS. From-SVN: r34799
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/config/ia64/ia64.h9
2 files changed, 13 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 493e1ea..fdc55f3 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2000-06-29 Jim Wilson <wilson@cygnus.com>
+
+ * config/ia64/ia64.h (PREFERRED_RELOAD_CLASS): Return NO_REGS for
+ a volatile mem and FR_REGS.
+
2000-06-29 Mark Mitchell <mark@codesourcery.com>
* c-common.c: Include c-common.h, not c-lex.h or c-tree.h.
diff --git a/gcc/config/ia64/ia64.h b/gcc/config/ia64/ia64.h
index 88257b7..b2c80cd 100644
--- a/gcc/config/ia64/ia64.h
+++ b/gcc/config/ia64/ia64.h
@@ -983,7 +983,14 @@ enum reg_class
The value is a register class; perhaps CLASS, or perhaps another, smaller
class. */
-#define PREFERRED_RELOAD_CLASS(X, CLASS) CLASS
+/* Don't allow volatile mem reloads into floating point registers. This
+ is defined to force reload to choose the r/m case instead of the f/f case
+ when reloading (set (reg fX) (mem/v)). */
+
+#define PREFERRED_RELOAD_CLASS(X, CLASS) \
+ ((CLASS == FR_REGS && GET_CODE (X) == MEM && MEM_VOLATILE_P (X)) \
+ ? NO_REGS \
+ : CLASS)
/* You should define this macro to indicate to the reload phase that it may
need to allocate at least one register for a reload in addition to the