This is the mail archive of the mailing list for the GCC project.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Query with legitimate_constant_p

"Daniel Towner" <> writes:

> Hi all,
>  I am writing a new port of GCC. I want to prevent symbol_refs from being
> used as immediate operands, so I am specifically rejecting these in
> legitimate_constant_p.

You don't want to do this...

> However, this also means that the addresses of
> symbol_refs can't be computed (e.g, loading the address into a  register),

because clearly you _do_ use SYMBOL_REF as an immediate operand.

> where previously a `mov??3' instruction was used to move the  symbol_ref
> address into a register. This no longer works, as the mov  instruction can't
> accept an immediate symbol_ref any more. How do I fix  this?

Instead of doing that, use `n' constraints, and suitable predicates
where appropriate, to prevent GCC generating symbol references as
immediate operands where they won't work.

> Do I need an instruction pattern which just matches a symbol_ref and
> loads its value into a register, or do I need to use a define_expand
> to explicitly create such an instruction?

- Geoffrey Keating <> <>

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]