------- Comment #23 from dberlin at gcc dot gnu dot org  2006-08-27 16:00 
-------
Subject: Re:  [4.0/4.1/4.2 Regression] alias bug with cast and call clobbered

> ------- Comment #22 from rguenth at gcc dot gnu dot org  2006-08-27 15:49 
> -------
> Well, yes.  If we still had pt_vars at the time of add_call_clobber_ops () we
> might only do it if one of the actual params of a CALL_EXPR has pt_anything
> set.
> But call clobbering is not per call-site or flow-sensitive (yet).

So just to be clear

Given:
The workaround is  that any function which has *incoming* pointer
arguments will have every addressable variable *in that function*
marked as call clobbering (IE regardless of what the call), as with
your patch.  This will also be true with any function that has a store
to a global pointer, any function that casts between pointers and
ints, and any function that passes pointers to a call.
Relatively speaking, this is a very large percentage of all functions
written, IMHO.

Then all of the following are true (this really is a question, not a
statement)?
1. You believe this is a good idea for 4.2, even though it will
probably cause a very marked decrease in performance of generated code
compared to every previous 4.x series.

2. Even though this bug has been here for all 4.x versions and only
reported now, you believe it affects a large enough number of users to
make #1 acceptable.

As is clear by now, I don't believe #2 is true, which is why i
proposed fixing it properly (computing the clobbering sets
independently of aliasing, which is going to be some moderate amount
of code) in 4.3, and leaving this bug open, as a better solution.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=28778

Reply via email to