[PATCH] Fix PR39207, bogus strict-aliasing warning, PR39074, wrong PTA

Daniel Berlin dberlin@dberlin.org
Wed Feb 18 19:21:00 GMT 2009


Richard and I worked this one out over IRC. The name and purpose were
confusing me :)
Patch seems fine

On Wed, Feb 18, 2009 at 2:04 PM, Daniel Berlin <dberlin@dberlin.org> wrote:
> On Wed, Feb 18, 2009 at 1:53 PM, Richard Guenther <rguenther@suse.de> wrote:
>> On Wed, 18 Feb 2009, Daniel Berlin wrote:
>>
>>> >> Also, you have the comment and the description wrong.
>>> >> It's really adding edges *to* STOREDANYTHING *from* all non-direct nodes.
>>> >
>>> > Sure?  We want to propagate from STOREDANYTHING to all non-direct nodes,
>>> > so with
>>>
>>> Uh, well then i'm not clear on what you are doing.
>>> Being an indirect node simply means the node may be referenced other
>>> than by it's name.
>>> This does not mean it points to anything. So why receive an edge from
>>> STOREDANYTHING.
>>
>> It doesn't make it point to anything, it makes it point to whatever
>> was stored to anything.
>>
>>> It will certainly make it point to more things, but i don't see why it
>>> is correct at all.
>>
>> Only indirect nodes are indirectly stored to, thus may be changed by
>> *LHS = RHS constraints.
>
> True, but.
>
>>  STOREDANYTHING is used to compute
>> *LHS = X with LHS containing anything (thus, effectively
>> ANYTHING = X) by doing STOREDANYTHING = X, anything = STOREDANYTHING.
>> And the latter constraint is modeled by adding those edges.
>
> But your edge is X = STOREDANYTHING.
> bool add_graph_edge (constraint_graph_t *g, unsigned int to, unsigned int from)
> You have:
> add_graph_edge (graph, find (i), t);
>
> t = STOREDANYTHING
> find(i) = the indirect node.
>
> Thus, you have indirect node = STOREDANYTHING for every indirect node,
> Whereas I think you should have (as you wrote above)
> STOREDANYTHING = indirect node for each indirect node
>
>> See PR39074.
>>
>> Richard.
>>
>



More information about the Gcc-patches mailing list