------- Comment #8 from rguenther at suse dot de 2008-07-03 11:49 ------- Subject: Re: [4.4 regression] r137252 breaks -O2 optimization on x86_64-unknown-linux-gnu
On Thu, 3 Jul 2008, dfranke at gcc dot gnu dot org wrote: > ------- Comment #7 from dfranke at gcc dot gnu dot org 2008-07-03 11:42 > ------- > Differences in *.optimized dumps seem to be variable renaming only, e.g. > - temp.1140 = tdata->p; > + temp.1137 = tdata->p; > > Differences in *.alias seems to be mostly of the kind: > -PARM_NOALIAS.895 = &ANYTHING > +PARM_NOALIAS.895 = &ESCAPED > > However, I also found: > -PARM_NOALIAS.895 = { ANYTHING ESCAPED NONLOCAL } > -D.3410_6 = same as thread_data > -thread_data = { ANYTHING } > -D.3411_7 = same as thread_data > +PARM_NOALIAS.895 = { ESCAPED NONLOCAL } > +D.3410_6 = same as derefaddrtmp.893 > +thread_data = same as derefaddrtmp.893 <---- ?!? > +D.3411_7 = same as derefaddrtmp.893 Well, it's not really different - only thread_data now doesn't point to anything but to the same as derefaddrtmp.893 (I guess that points to { ESCAPED NONLOCAL }?). > which might hint at the problem: the variable thread_data is an allocated > POINTER to a vector of structures (which hold more pointers), public within a > module. USE-ing it, makes it (sort of) local to the function. Most (>80% of > all) changes in *.optimized where in the one source file that uses this module > ... > > Richard, would this fit the bill? Well, if there is no difference in the optimized dumps then this doesn't explain it (but the points-to differences also look good). Richard. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36713