summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorwilson <wilson@138bc75d-0d04-0410-961f-82ee72b054a4>2000-06-30 01:07:51 +0000
committerwilson <wilson@138bc75d-0d04-0410-961f-82ee72b054a4>2000-06-30 01:07:51 +0000
commit83b717468ad517dcd02f2ac0fbd19350caa3ee30 (patch)
tree44c4342bc983f65b09dcf12ae494f684d776a1fc
parent617d12ff0c99a8bbf284ef2390ef3aef1e3b3096 (diff)
downloadppe42-gcc-83b717468ad517dcd02f2ac0fbd19350caa3ee30.tar.gz
ppe42-gcc-83b717468ad517dcd02f2ac0fbd19350caa3ee30.zip
Fix glibc 2.2 build failure.
* config/ia64/ia64.h (PREFERRED_RELOAD_CLASS): Return NO_REGS for a volatile mem and FR_REGS. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@34799 138bc75d-0d04-0410-961f-82ee72b054a4
-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 493e1eab14b..fdc55f3b3e6 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 88257b72cf0..b2c80cdae33 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
OpenPOWER on IntegriCloud