This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: Legitimize address, Please HELP!
- From: Jan Hubicka <jh at suse dot cz>
- To: dimmy <diwil at mail dot ru>
- Cc: gcc at gcc dot gnu dot org
- Date: Wed, 5 Dec 2001 16:30:59 +0100
- Subject: Re: Legitimize address, Please HELP!
- References: <3C0E1421.1080906@mail.ru>
> 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