[PATCH] - Use of powerpc 64bit instructions in 32bit ABI

Eric Botcazou ebotcazou@libertysurf.fr
Tue Dec 2 09:20:00 GMT 2003


> 	I am testing with the following patch.

It cures the pessimization for my original testcase.  However, I think this 
is not enough for the following slightly tweaked case:

typedef struct { char a; } Scc1;

void checkScc1 (Scc1 x, _Complex char y)
{
  if (x.a != Re(y))
    abort ();
}

We start with:

(parallel:QI [
        (expr_list (reg:DI %i0)
            (const_int 0 [0x0]))
    ])

and the new transformation generates

(reg:QI 107)

so emit_group_store emits a move between the two locations, which requires 9 
more insns in the 01.rtl file than the original code, because this time no 
reg is spilled so a combination of ASHIFT, SUBREG, AND and OR is used.  This 
is fully recovered at -O2, but not at -O1.

So I'd suggest to explicitly test the pattern you want to catch, using 
XVECEXP and the likes (see the transformation just above the hot spot).

-- 
Eric Botcazou



More information about the Gcc-patches mailing list