summaryrefslogtreecommitdiff
path: root/gcc/config
diff options
context:
space:
mode:
authorwilson <wilson@138bc75d-0d04-0410-961f-82ee72b054a4>2000-09-08 01:35:53 +0000
committerwilson <wilson@138bc75d-0d04-0410-961f-82ee72b054a4>2000-09-08 01:35:53 +0000
commite6a0eb01ca519626e2be5e18d175dfc107fe36e1 (patch)
tree1249b18fdb950c858b6285494d6803b5dbb322ab /gcc/config
parentb3b57f6bbd0cbce37049cde1c0e9fa34c1b07335 (diff)
downloadgcc-e6a0eb01ca519626e2be5e18d175dfc107fe36e1.tar.gz
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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@36256 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/config')
-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 70647450e83..86463b4e029 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