tinycc-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Tinycc-devel] [PATCH] When handling '.' operator, cope with VT_LLOC


From: Edmund Grimley Evans
Subject: Re: [Tinycc-devel] [PATCH] When handling '.' operator, cope with VT_LLOCAL
Date: Sat, 21 Feb 2015 23:21:25 +0000
User-agent: Mutt/1.5.21 (2010-09-15)

Michael Matz <address@hidden>:

> Do you have a testcase?

I made the change after something in abitest failed with the arm64
back end, but with a newer version than the one I sent to the list.

> is: this patches only one place where lvalue_type is called (i.e.
> where something on the stack is lvalueized again).

The function lvalue_type isn't just used to "lvalueise" things, and
there may be places where the stack is lvaluised without calling
lvalue_type ...

> Why are the
> others trivially correct and don't need such handling?

I expect there are many bits of code that are wrong but which happen
never to receive the values that they can't handle.

How many parts of tccgen.c can correctly handle a VT_REF, do you
think? :-)

> Also,
> conceptually, I might have a problem with this: it fixes up things
> after they went wrong.  For instance, why isn't the problem in
> gen_op?  I mean, one invariant of gen_op (when called with
> non-optimizable args) is that it leaves a non-lvalue on the stack,
> so the code in unary() is correct as is, for those cases.  So,
> wouldn't it be better if the lvalue-to-rvalue conversion would
> happen also with gen_op(+,0)?

The advantage of making gen_op always convert to an rvalue is that
other code would have to worry about fewer cases.

The only disadvantage that I can think of is that certain expressions
which would cause GCC to warn that "value computed is not used" would
not get optimised.

So, if you're suggesting that gen_op should be modified to always
convert to an rvalue, then I think I agree. Shall we do that instead?

Since I probably still have a test case to hand, should I propose an
alternative patch that fixes my problem by modifying gen_op?

Edmund



reply via email to

[Prev in Thread] Current Thread [Next in Thread]