mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-02-19 23:00:24 +08:00
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
This commit is contained in:
parent
f1158db342
commit
46146529f6
@ -1,3 +1,10 @@
|
||||
2000-09-07 Jim Wilson <wilson@cygnus.com>
|
||||
|
||||
* 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.
|
||||
|
||||
2000-09-07 Zack Weinberg <zack@wolery.cumb.org>
|
||||
|
||||
* cpplib.h (struct cpp_options): Add user_label_prefix member,
|
||||
|
@ -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
|
||||
|
@ -946,7 +946,8 @@ push_reload (in, out, inloc, outloc, class,
|
||||
if (in != 0 && GET_CODE (in) == SUBREG
|
||||
&& (SUBREG_WORD (in) == 0 || strict_low)
|
||||
#ifdef CLASS_CANNOT_CHANGE_MODE
|
||||
&& class != CLASS_CANNOT_CHANGE_MODE
|
||||
&& (class != CLASS_CANNOT_CHANGE_MODE
|
||||
|| ! CLASS_CANNOT_CHANGE_MODE_P (GET_MODE (SUBREG_REG (in)), inmode))
|
||||
#endif
|
||||
&& (CONSTANT_P (SUBREG_REG (in))
|
||||
|| GET_CODE (SUBREG_REG (in)) == PLUS
|
||||
@ -1051,7 +1052,9 @@ push_reload (in, out, inloc, outloc, class,
|
||||
if (out != 0 && GET_CODE (out) == SUBREG
|
||||
&& (SUBREG_WORD (out) == 0 || strict_low)
|
||||
#ifdef CLASS_CANNOT_CHANGE_MODE
|
||||
&& class != CLASS_CANNOT_CHANGE_MODE
|
||||
&& (class != CLASS_CANNOT_CHANGE_MODE
|
||||
|| ! CLASS_CANNOT_CHANGE_MODE_P (GET_MODE (SUBREG_REG (out)),
|
||||
outmode))
|
||||
#endif
|
||||
&& (CONSTANT_P (SUBREG_REG (out))
|
||||
|| strict_low
|
||||
|
Loading…
Reference in New Issue
Block a user