------- 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