Andrew Pinski wrote, On Friday 12 October 2012 11:26 AM:
Except the problem here is just about what f1 clobbers. Since a has not escaped by the time f1 is called, f1 cannot clobber a (or d). http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23384 for reference on why GCC gets this incorrect. GCC does not have a flow sensitive clobber list yet.
Agreed. However, two pertinent points are: - I can replace the call to f1 by some statically indeterminate boolean condition that does not involve any function call. So my basic point although details could vary. - It is this flow insensitivity that I dislike :-) I have been trying for over five years to do away with flow and context insensitivity without hampering efficiency. Now I know that avoiding them could actually aid efficiency, apart from the guaranteed benefit of precision :-) Uday.