------- 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 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? -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36713