diff options
author | wilson <wilson@138bc75d-0d04-0410-961f-82ee72b054a4> | 2000-09-08 01:35:53 +0000 |
---|---|---|
committer | wilson <wilson@138bc75d-0d04-0410-961f-82ee72b054a4> | 2000-09-08 01:35:53 +0000 |
commit | e6a0eb01ca519626e2be5e18d175dfc107fe36e1 (patch) | |
tree | 1249b18fdb950c858b6285494d6803b5dbb322ab /gcc/config | |
parent | b3b57f6bbd0cbce37049cde1c0e9fa34c1b07335 (diff) | |
download | gcc-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.h | 7 |
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 |