[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