On 12/11/2012 11:33 AM, Jakub Jelinek wrote:
I guess it depends on how would make_lvalue_use differ from make_rvalue_use
in the future. To some extent it is lvalue-ish use, but not completely,
while it is taking its address, it is fine if the operand is e.g. const,
which is wrong for lvalues.
On Tue, Dec 11, 2012 at 11:19:48AM -0500, Jason Merrill wrote:
> On 12/11/2012 03:16 AM, Jakub Jelinek wrote:
> >+ if (constraint_parsed && !allows_reg && allows_mem)
> >+operand = mark_rvalue_use (TREE_VALUE (t));
>
> This should be mark_lvalue_use, since we're using its address rath
On 12/11/2012 03:16 AM, Jakub Jelinek wrote:
+ if (constraint_parsed && !allows_reg && allows_mem)
+ operand = mark_rvalue_use (TREE_VALUE (t));
This should be mark_lvalue_use, since we're using its address rather
than its value. OK with that change.
Jason
Hi!
As the testcase shows, for "m" or similar constraints that don't accept
registers, but do accept memory, we want to call *mark_addressable on the
operand, but the call to decay_conversion can change something that was
originally addressable into something non-addressable (be it replacement
of