Fix processing of ADDR_EXPR in get_expr_operands
Diego Novillo
dnovillo@redhat.com
Fri Jul 30 21:17:00 GMT 2004
On Fri, 2004-07-30 at 09:27, Richard Kenner wrote:
> No. It is not a bug. I don't know how else to tell you the same
> thing. Address constness is checked with TREE_INVARIANT. The address
> of a variable may be invariant in one invocation to a function, but have
> different values from call to call.
>
> The two mean two different thing: "invariant" means it won't change during
> the execution of the function while "constant" means it won't change *at all*.
>
I feel like I'm talking to myself here. Yes, that's exactly what it
means and that's exactly what I've been saying all this time.
> I can easily see cases where the first is what's wanted and where the second
> is what's wanted. It may well be that in that particular case, "invariant"
> is the wanted property, but I don't accept that that's *always* the case.
>
For address constants? Yes, that's always the case. CONSTANT is a
superset of INVARIANT. In an intra-procedural setting, we care for
invariant addresses, we don't care if they are constant or not.
> Yes. Overflow.
>
> Why do we care about overflow? If an addressing computation overflows, it's
> still a constant!
>
No. That's for real constants. I was describing what
is_gimple_min_invariant does. Check the code out.
Diego.
More information about the Gcc-patches
mailing list