rs6000.h (LEGITIMATE_LO_SUM_ADDRESS_P): Complex LO_SUM addresses less than word size are not legitimate...
* config/rs6000/rs6000.h (LEGITIMATE_LO_SUM_ADDRESS_P): Complex LO_SUM addresses less than word size are not legitimate, because they lead to invalid SUBREGs. * config/rs6000/rs6000.c (rs6000_legitimize_address): Likewise. From-SVN: r47514
This commit is contained in:
parent
a22455dfa1
commit
6ac7bf2c9e
3 changed files with 20 additions and 13 deletions
|
@ -1,3 +1,10 @@
|
|||
2001-12-01 Geoff Keating <geoffk@redhat.com>
|
||||
|
||||
* config/rs6000/rs6000.h (LEGITIMATE_LO_SUM_ADDRESS_P): Complex
|
||||
LO_SUM addresses less than word size are not legitimate,
|
||||
because they lead to invalid SUBREGs.
|
||||
* config/rs6000/rs6000.c (rs6000_legitimize_address): Likewise.
|
||||
|
||||
2001-12-01 Olivier Hainque <hainque@act-europe.fr>
|
||||
|
||||
* unroll.c (loop_iterations): Give up on jumps with null JUMP_LABEL
|
||||
|
|
|
@ -1617,6 +1617,7 @@ rs6000_legitimize_address (x, oldx, mode)
|
|||
else if (GET_CODE (x) == PLUS
|
||||
&& GET_CODE (XEXP (x, 0)) == REG
|
||||
&& GET_CODE (XEXP (x, 1)) != CONST_INT
|
||||
&& GET_MODE_NUNITS (mode) == 1
|
||||
&& (TARGET_HARD_FLOAT || TARGET_POWERPC64 || mode != DFmode)
|
||||
&& (TARGET_POWERPC64 || mode != DImode)
|
||||
&& mode != TImode)
|
||||
|
@ -1640,9 +1641,9 @@ rs6000_legitimize_address (x, oldx, mode)
|
|||
&& GET_CODE (x) != CONST_INT
|
||||
&& GET_CODE (x) != CONST_DOUBLE
|
||||
&& CONSTANT_P (x)
|
||||
&& (TARGET_HARD_FLOAT || mode != DFmode)
|
||||
&& mode != DImode
|
||||
&& mode != TImode)
|
||||
&& GET_MODE_NUNITS (mode) == 1
|
||||
&& (GET_MODE_BITSIZE (mode) <= 32
|
||||
|| (TARGET_HARD_FLOAT && mode != DFmode)))
|
||||
{
|
||||
rtx reg = gen_reg_rtx (Pmode);
|
||||
emit_insn (gen_elf_high (reg, (x)));
|
||||
|
|
|
@ -1975,16 +1975,15 @@ typedef struct rs6000_args
|
|||
#define LEGITIMATE_INDIRECT_ADDRESS_P(X, STRICT) \
|
||||
(GET_CODE (X) == REG && INT_REG_OK_FOR_BASE_P (X, (STRICT)))
|
||||
|
||||
#define LEGITIMATE_LO_SUM_ADDRESS_P(MODE, X, STRICT) \
|
||||
(TARGET_ELF \
|
||||
&& ! flag_pic && ! TARGET_TOC \
|
||||
&& (MODE) != DImode \
|
||||
&& (MODE) != TImode \
|
||||
&& ! ALTIVEC_VECTOR_MODE (MODE) \
|
||||
&& (TARGET_HARD_FLOAT || (MODE) != DFmode) \
|
||||
&& GET_CODE (X) == LO_SUM \
|
||||
&& GET_CODE (XEXP (X, 0)) == REG \
|
||||
&& INT_REG_OK_FOR_BASE_P (XEXP (X, 0), (STRICT)) \
|
||||
#define LEGITIMATE_LO_SUM_ADDRESS_P(MODE, X, STRICT) \
|
||||
(TARGET_ELF \
|
||||
&& ! flag_pic && ! TARGET_TOC \
|
||||
&& GET_MODE_NUNITS (MODE) == 1 \
|
||||
&& (GET_MODE_BITSIZE (MODE) <= 32 \
|
||||
|| (TARGET_HARD_FLOAT && (MODE) != DFmode)) \
|
||||
&& GET_CODE (X) == LO_SUM \
|
||||
&& GET_CODE (XEXP (X, 0)) == REG \
|
||||
&& INT_REG_OK_FOR_BASE_P (XEXP (X, 0), (STRICT)) \
|
||||
&& CONSTANT_P (XEXP (X, 1)))
|
||||
|
||||
#define GO_IF_LEGITIMATE_ADDRESS(MODE, X, ADDR) \
|
||||
|
|
Loading…
Add table
Reference in a new issue