Hello, Attached is a new version of the patch.
Thanks to Dominique Dhumieres for testing on powerpc-apple-darwin9 and x86_64-apple-darwin10. Tested ppc64-redhat-linux on both with -m32,-m64 and SPU. OK for mainline? Thanks, Revital testsuite/Changelog PR rtl-optimization/47013 * gcc.dg/sms-2.c: Change scan-tree-dump-times and the code itself to preserve the function. * gcc.dg/sms-6.c: Add --param sms-min-sc=1 -fmodulo-sched-allow-regmoves, and -mno-update for PowerPC. * gcc.dg/sms-3.c: Add --param sms-min-sc=1 and -fmodulo-sched-allow-regmoves flags. * gcc.dg/sms-7.c: Add -fmodulo-sched-allow-regmoves and --param sms-min-sc=1 flags and -mno-update for PowerPC. Increase the SMS succeeded loops for the SPU. * gcc.dg/sms-4.c: Add --param sms-min-sc=1 -mno-update for PowerPC. * gcc.dg/sms-8.c: Add --param sms-min-sc=1. Change scan-rtl-dump-times for PowerPC. * gcc.dg/sms-5.c: Add --param sms-min-sc=1 flag and -mno-update for PowerPC.
Index: testsuite/gcc.dg/sms-2.c =================================================================== --- testsuite/gcc.dg/sms-2.c (revision 173659) +++ testsuite/gcc.dg/sms-2.c (working copy) @@ -4,12 +4,11 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fmodulo-sched -fdump-rtl-sms" } */ - +int th, h, em, nlwm, nlwS, nlw, sy; void fun (nb) int nb; { - int th, h, em, nlwm, nlwS, nlw, sy; while (nb--) while (h--) @@ -33,5 +32,5 @@ fun (nb) } } -/* { dg-final { scan-rtl-dump-times "SMS succeeded" 1 "sms" { target spu-*-* powerpc*-*-* } } } */ +/* { dg-final { scan-rtl-dump-times "SMS loop many exits" 1 "sms" { target spu-*-* powerpc*-*-* } } } */ /* { dg-final { cleanup-rtl-dump "sms" } } */ Index: testsuite/gcc.dg/sms-6.c =================================================================== --- testsuite/gcc.dg/sms-6.c (revision 173659) +++ testsuite/gcc.dg/sms-6.c (working copy) @@ -1,5 +1,7 @@ /* { dg-do run } */ -/* { dg-options "-O2 -fmodulo-sched -fdump-rtl-sms" } */ +/* { dg-options "-O2 -fmodulo-sched -fdump-rtl-sms --param sms-min-sc=1 " } */ +/* { dg-options "-O2 -fmodulo-sched -fdump-rtl-sms -mno-update --param sms-min-sc=1 -fmodulo-sched-allow-regmoves " { target powerpc*-*-*} } */ + extern void abort (void); Index: testsuite/gcc.dg/sms-3.c =================================================================== --- testsuite/gcc.dg/sms-3.c (revision 173659) +++ testsuite/gcc.dg/sms-3.c (working copy) @@ -1,5 +1,5 @@ /* { dg-do run } */ -/* { dg-options "-O2 -fmodulo-sched -funroll-loops -fdump-rtl-sms" } */ +/* { dg-options "-O2 -fmodulo-sched -funroll-loops -fdump-rtl-sms --param sms-min-sc=1 -fmodulo-sched-allow-regmoves" } */ extern void abort (void); Index: testsuite/gcc.dg/sms-7.c =================================================================== --- testsuite/gcc.dg/sms-7.c (revision 173659) +++ testsuite/gcc.dg/sms-7.c (working copy) @@ -1,5 +1,6 @@ /* { dg-do run } */ -/* { dg-options "-O2 -fmodulo-sched -fstrict-aliasing -fdump-rtl-sms" } */ +/* { dg-options "-O3 -fmodulo-sched -fstrict-aliasing -fdump-rtl-sms -fmodulo-sched-allow-regmoves --param sms-min-sc=1" } */ +/* { dg-options "-O2 -fmodulo-sched -fstrict-aliasing -fdump-rtl-sms --param sms-min-sc=1 -mno-update -fmodulo-sched-allow-regmoves" { target powerpc*-*-*} } */ extern void abort (void); @@ -44,7 +45,7 @@ int main() return 0; } -/* { dg-final { scan-rtl-dump-times "SMS succeeded" 1 "sms" { target spu-*-* } } } */ +/* { dg-final { scan-rtl-dump-times "SMS succeeded" 2 "sms" { target spu-*-* } } } */ /* { dg-final { scan-rtl-dump-times "SMS succeeded" 3 "sms" { target powerpc*-*-* } } } */ /* { dg-final { cleanup-rtl-dump "sms" } } */ Index: testsuite/gcc.dg/sms-4.c =================================================================== --- testsuite/gcc.dg/sms-4.c (revision 173659) +++ testsuite/gcc.dg/sms-4.c (working copy) @@ -1,6 +1,7 @@ /* Inspired from sbitmap_a_or_b_and_c_cg function in sbitmap.c. */ /* { dg-do run } */ -/* { dg-options "-O2 -fmodulo-sched -fmodulo-sched-allow-regmoves -fdump-rtl-sms" } */ +/* { dg-options "-O2 -fmodulo-sched -fmodulo-sched-allow-regmoves -fdump-rtl-sms " } */ +/* { dg-options "-O2 -fmodulo-sched -fmodulo-sched-allow-regmoves -fdump-rtl-sms --param sms-min-sc=1 -mno-update" { target powerpc*-*-*} } */ extern void abort (void); Index: testsuite/gcc.dg/sms-8.c =================================================================== --- testsuite/gcc.dg/sms-8.c (revision 173659) +++ testsuite/gcc.dg/sms-8.c (working copy) @@ -3,7 +3,8 @@ that was not fixed by reg-moves. */ /* { dg-do run } */ - /* { dg-options "-O2 -fmodulo-sched -fmodulo-sched-allow-regmoves -fdump-rtl-sms" } */ + /* { dg-options "-O2 -fmodulo-sched -fmodulo-sched-allow-regmoves -fdump-rtl-sms --param sms-min-sc=1" } */ + /* { dg-options "-O2 -fmodulo-sched -fmodulo-sched-allow-regmoves -fdump-rtl-sms" { target powerpc*-*-*} } */ extern void abort (void); @@ -35,7 +36,7 @@ main () return 0; } -/* { dg-final { scan-rtl-dump-times "SMS succeeded" 1 "sms" { target powerpc*-*-* } } } */ +/* { dg-final { scan-rtl-dump-times "SMS succeeded" 0 "sms" { target powerpc*-*-* } } } */ /* { dg-final { cleanup-rtl-dump "sms" } } */ Index: testsuite/gcc.dg/sms-5.c =================================================================== --- testsuite/gcc.dg/sms-5.c (revision 173659) +++ testsuite/gcc.dg/sms-5.c (working copy) @@ -1,5 +1,6 @@ /* { dg-do run } */ -/* { dg-options "-O2 -fmodulo-sched -fmodulo-sched-allow-regmoves -funroll-loops -fdump-rtl-sms" } */ +/* { dg-options "-O2 -fmodulo-sched -fmodulo-sched-allow-regmoves -funroll-loops -fdump-rtl-sms --param sms-min-sc=1" } */ + /* { dg-options "-O2 -fmodulo-sched -fmodulo-sched-allow-regmoves -funroll-loops -fdump-rtl-sms -mno-update --param sms-min-sc=1" { target powerpc*-*-*} } */ /* This is the same test as loop-2e.c test. It is related to a fix in the generation of the prolog and epilog. */