https://gcc.gnu.org/g:7faadb1f261c6b8ef988c400c39ec7df09839dbe

commit r15-4106-g7faadb1f261c6b8ef988c400c39ec7df09839dbe
Author: Alex Coplan <alex.cop...@arm.com>
Date:   Thu Sep 26 16:36:48 2024 +0100

    testsuite: Prevent unrolling of main in LTO test [PR116683]
    
    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.
    
    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:
---
 gcc/testsuite/g++.dg/ext/pragma-unroll-lambda-lto.C | 1 +
 1 file changed, 1 insertion(+)

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 ddf11730e338..0db57c8d3a01 100644
--- a/gcc/testsuite/g++.dg/ext/pragma-unroll-lambda-lto.C
+++ b/gcc/testsuite/g++.dg/ext/pragma-unroll-lambda-lto.C
@@ -25,6 +25,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 ();

Reply via email to