On Tue, Jul 26, 2011 at 2:59 PM, Razya Ladelsky <ra...@il.ibm.com> wrote: > Richard Guenther <richard.guent...@gmail.com> wrote on 25/07/2011 05:54:28 > PM: > >> From: Richard Guenther <richard.guent...@gmail.com> >> To: Razya Ladelsky/Haifa/IBM@IBMIL >> Cc: gcc-patches@gcc.gnu.org, Zdenek Dvorak >> <rakd...@kam.mff.cuni.cz>, Sebastian Pop <s...@gcc.gnu.org> >> Date: 25/07/2011 05:54 PM >> Subject: Re: [patch] Fix PR tree-optimization/49471 >> >> On Mon, Jul 25, 2011 at 4:47 PM, Razya Ladelsky <ra...@il.ibm.com> > wrote: >> > Hi, >> > >> > This patch fixes the build failure of cactusADM and dealII spec2006 >> > benchmarks when autopar is enabled. >> > (for powerpc they fail only when -m32 is additionally enabled) >> > >> > The problem originated in canonicalize_loop_ivs, where we iterate the >> > header's phis in order to base all >> > the induction variables on a single control variable. >> > We use the largest precision of the loop's ivs in order to determine > the >> > type of the control variable. >> > >> > Since iterating the loop's phis takes into account not only the loop's >> > ivs, but also reduction variables, >> > we got precision values like 80 for x86, or 128 for ppc. >> > The compilers failed to create proper types for these sizes >> > (respectively). >> > >> > The proper behavior for determining the control variable's type is to > take >> > into account only the loop's ivs, >> > which is what this patch does. >> > >> > Bootstrap and testsuite pass successfully (as autopar is not enabled > by >> > default). >> > No new regressions when the testsuite is run with autopar enabled. >> > No new regressions for the run of spec2006 with autopar enabled, >> > >> > cactusADM and dealII benchmarks now pass successfully with autopar on >> > powerpc and x86. >> > >> > Thanks to Zdenek who helped me figure out the failure/fix. >> > OK for trunk? >> >> It'll collide with Sebastians patch in that area. I suggested a >> INTEGRAL_TYPE_P check instead of the simple_iv one, it >> should be cheaper. Zdenek, do you think it will be "incorrect" >> in some cases? >> > > The INTEGRAL_TYPE_P check does work for cactusADM and dealII, but > I'm not sure about the general case.
I suppose we also need to allow POINTER_TYPE_P here (but then treat it like an unsigned variable of the same width). Richard. > Razya > > >> Thanks, >> Richard. >> >> > Thanks, >> > Razya >> > >> > ChangeLog: >> > >> > PR tree-optimization/49471 >> > * tree-vect-loop-manip.c (canonicalize_loop_ivs): Add condition to >> > ignore reduction variables when iterating the loop header's phis. >> > >> > >> > > >