Fix glibc 2.2 build failure.
authorJim Wilson <wilson@cygnus.com>
Fri, 30 Jun 2000 01:07:51 +0000 (01:07 +0000)
committerJim Wilson <wilson@gcc.gnu.org>
Fri, 30 Jun 2000 01:07:51 +0000 (18:07 -0700)
* config/ia64/ia64.h (PREFERRED_RELOAD_CLASS): Return NO_REGS for
a volatile mem and FR_REGS.

From-SVN: r34799

gcc/ChangeLog
gcc/config/ia64/ia64.h

index 493e1ea..fdc55f3 100644 (file)
@@ -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.
index 88257b7..b2c80cd 100644 (file)
@@ -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