Legitimize address, Please HELP!
Jan Hubicka
jh@suse.cz
Wed Dec 5 07:31:00 GMT 2001
> int
> legitimate_address_p (mode, operand, strict)
> enum machine_mode mode;
> rtx operand;
> int strict;
> {
> rtx x = operand;
>
> /* accept @Rn */
> if (GET_CODE (operand) == REG
> &&(strict ? REG_OK_FOR_BASE_STRICT_P (x)
> : REG_OK_FOR_BASE_NOSTRICT_P (x)))
> return 1;
>
> /* accept address */
> if (CONSTANT_ADDRESS_P (operand))
> return 1;
>
> /* accept X(Rn) */
> if (GET_CODE (operand) == PLUS
> && GET_CODE (XEXP (operand, 0)) == REG
> && REG_OK_FOR_BASE_P (XEXP (operand, 0))
> && CONSTANT_ADDRESS_P (XEXP (operand, 1)))
> return 1;
>
Missing return 0;
> }
> --------------------------
>
> Shall I define something else to prevent invalid address generation or what?
It is normal for invalid addresses to be generated and rejected
during the compilation.
If you want to do some special tricks, you may define LEGITIMIZE
macros, but in your case, it the default behaviour is most probably
OK. I guess only problem is the missing return :)
Honza
More information about the Gcc
mailing list