Hi, In r15-3585-g9759f6299d9633cabac540e5c893341c708093ac I added a test which started failing on PowerPC. The test checks that we unroll exactly one loop three times with the following:
// { dg-final { scan-ltrans-rtl-dump-times "Unrolled loop 3 times" 1 "loop2_unroll" } } which passes on most targets. However, on PowerPC, the loop in main gets unrolled too, causing the scan-ltrans-rtl-dump-times check to fail as the statement now appears twice in the dump. I think the extra unrolling is due to different unrolling heuristics in the rs6000 port. This patch therefore explicitly tries to block the unrolling in main with an appropriate #pragma. I've checked that the test now passes on power (on cfarm29) and aarch64. I also checked that reverting the lto-streamer-{in,out}.cc changes still causes the test to fail (on aarch64). OK for trunk? Thanks, Alex gcc/testsuite/ChangeLog: PR testsuite/116683 * g++.dg/ext/pragma-unroll-lambda-lto.C (main): Add #pragma to prevent unrolling of the setup loop.
diff --git a/gcc/testsuite/g++.dg/ext/pragma-unroll-lambda-lto.C b/gcc/testsuite/g++.dg/ext/pragma-unroll-lambda-lto.C index 64cdf90f34d..20cbd2d15cf 100644 --- a/gcc/testsuite/g++.dg/ext/pragma-unroll-lambda-lto.C +++ b/gcc/testsuite/g++.dg/ext/pragma-unroll-lambda-lto.C @@ -24,6 +24,7 @@ short *use_find(short *p) int main(void) { short a[1024]; +#pragma GCC unroll 0 for (int i = 0; i < 1024; i++) a[i] = rand ();