On Tue, 10 Jul 2012, Jia Liu wrote:
> Hi all,
>
> When I build lm32-elf-gcc, it failed at libgcc configure due to
> lm32-elf-cc1 segment fault when compile conftest.c:
>
> void bar ();
> void clean (int *);
> void foo ()
> {
>   int i __attribute__ ((cleanup (clean)));
>   bar();
> }
>
> Then I find lm32_legitimate_constant_p return false too much times, it
> shouldn't like this, I think.
>
> And I find the movsi pattern has handle the pic and reloc_operand, but
> lm32_legitimate_constant_p
> handle them again, so, I think maybe it is unnecessary.

The movsi pattern really is expected to handle it; the
TARGET_LEGITIMATE_CONSTANT_P (i.e. lm32_legitimate_constant_p)
is for immediate operands to *other* insns.  The movsi pattern
is expected to handle the rest.  The correct solution is
elsewhere.

> When I remove the unnecessary constant legitimate check, lm32-elf-gcc
> is built OK.

But most likely will fail to generate correct code for some
source codes for which it worked before.

A patch like this needs a full test-suite run anyway.

(Not an approver-review.)

brgds, H-P

Reply via email to