[Bug rtl-optimization/48496] [4.7/4.8 Regression] 'asm' operand requires impossible reload
ebotcazou at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Tue Apr 10 15:31:00 GMT 2012
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48496
--- Comment #22 from Eric Botcazou <ebotcazou at gcc dot gnu.org> 2012-04-10 15:29:46 UTC ---
> > ;; Note that while this accepts mem, it only accepts non-volatile mem,
> > ;; and so cannot be "fixed" by adjusting the address. Thus it cannot
> > ;; and does not use define_memory_constraint.
> > (define_constraint "Q"
> > "Non-volatile memory for FP_REG loads/stores"
> > (and (match_operand 0 "memory_operand")
> > (match_test "!MEM_VOLATILE_P (op)")))
>
> Ah, I see. So the fix would probably be to simply add an equivalent "if
> reload_in_progress, accept pseudos" (since pseudo stack slots are never
> volatile) to this constrains ...
Quite ugly, but probably the most reasonable approach. While we are at it, do
you have an opinion as to how we should fix the MEM_VOLATILE_P problem? It
turns out that memory_operand doesn't accept only MEMs, but also SUBREGs of
MEMs, and it is therefore invalid to directly access MEM_VOLATILE_P. I'm going
to test the obvious restriction in any case.
More information about the Gcc-bugs
mailing list