aboutsummaryrefslogtreecommitdiff
path: root/gcc/config/ia64/ia64.h
diff options
context:
space:
mode:
authorJim Wilson <wilson@cygnus.com>2000-09-08 01:35:53 +0000
committerJim Wilson <wilson@gcc.gnu.org>2000-09-07 18:35:53 -0700
commit46146529f66e8e16ad5eef0eb286d903722649e5 (patch)
tree1249b18fdb950c858b6285494d6803b5dbb322ab /gcc/config/ia64/ia64.h
parentf1158db34242a2bfcce395ebbe4f6ab7a1eaa759 (diff)
downloadgcc-46146529f66e8e16ad5eef0eb286d903722649e5.zip
gcc-46146529f66e8e16ad5eef0eb286d903722649e5.tar.gz
gcc-46146529f66e8e16ad5eef0eb286d903722649e5.tar.bz2
Fix ia64-linux compiler abort on perl.
* reload.c (push_reload): Use CLASS_CANNOT_CHANGE_MODE_P in addition to CLASS_CANNOT_CHANGE_MODE. * config/ia64/ia64.h (CLASS_CANNOT_CHANGE_MODE_P): True only if the mode classes are different. From-SVN: r36256
Diffstat (limited to 'gcc/config/ia64/ia64.h')
-rw-r--r--gcc/config/ia64/ia64.h7
1 files changed, 5 insertions, 2 deletions
diff --git a/gcc/config/ia64/ia64.h b/gcc/config/ia64/ia64.h
index 7064745..86463b4 100644
--- a/gcc/config/ia64/ia64.h
+++ b/gcc/config/ia64/ia64.h
@@ -1055,9 +1055,12 @@ enum reg_class
#define CLASS_CANNOT_CHANGE_MODE FR_REGS
-/* Defines illegal mode changes for CLASS_CANNOT_CHANGE_MODE. */
+/* Defines illegal mode changes for CLASS_CANNOT_CHANGE_MODE.
+ In FP regs, we can't change FP values to integer values and vice
+ versa, but we can change e.g. DImode to SImode. */
-#define CLASS_CANNOT_CHANGE_MODE_P(FROM,TO) 1
+#define CLASS_CANNOT_CHANGE_MODE_P(FROM,TO) \
+ (GET_MODE_CLASS (FROM) != GET_MODE_CLASS (TO))
/* A C expression that defines the machine-dependent operand constraint
letters (`I', `J', `K', .. 'P') that specify particular ranges of