https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68892
--- Comment #7 from Richard Biener <rguenth at gcc dot gnu.org> --- (In reply to Bill Seurer from comment #4) > That fix broke the test case pr60203.c. > > PASS: gcc.target/powerpc/pr60203.c (test for excess errors) > PASS: gcc.target/powerpc/pr60203.c scan-assembler-not stfd > FAIL: gcc.target/powerpc/pr60203.c scan-assembler-not lfd > PASS: gcc.target/powerpc/pr60203.c scan-assembler-not lxsdx > PASS: gcc.target/powerpc/pr60203.c scan-assembler-not stxsdx > PASS: gcc.target/powerpc/pr60203.c scan-assembler-not mfvsrd > PASS: gcc.target/powerpc/pr60203.c scan-assembler-not mtvsrd > > There are two lfds and lots of other ops in the generated code with the fix > > pack: > xxpermdi 0,2,1,0 > addi 9,1,-16 > xxpermdi 0,0,0,2 > stxvd2x 0,0,9 > lfd 1,-16(1) > lfd 2,-8(1) > blr > > and none without > > pack: > blr > > Compiled with -mcpu=power8 -O3. So this is very likely vectorization of long double pack (double a, double aa) { union u_ld u; u.d[0] = a; u.d[1] = aa; return u.ld; } being no longer profitable. I'll investigate why, this shouldn't have changed at all by the rev. I get # of expected passes 7 with a cross btw. pack: blr it's already optimized at GIMPLE level to pack (double a, double aa) { <bb 2>: return a_2(D); } even before vectorization. So certainly unrelated to this change.