[gcc r17-2485] testsuite: Add regression test for PR81549

"Naveen H.S via Gcc-cvs" <[email protected]>
Newsgroups gmane.comp.gcc.cvs
Message-ID <[email protected]>
https://gcc.gnu.org/g:bbc7fd5ae68069863b77a9d614a9aa82a4079e58

commit r17-2485-gbbc7fd5ae68069863b77a9d614a9aa82a4079e58
Author: Naveen <[email protected]>
Date:   Fri Jul 17 04:13:10 2026 -0700

    testsuite: Add regression test for PR81549
    
    The testcase from PR tree-optimization/81549 is already optimized on
    current trunk by the existing loop-PHI final-value replacement code.
    Add the testcase to preserve coverage for the delayed loop-carried value
    and verify that the final stores and return value are folded to constants.
    
    gcc/testsuite/ChangeLog:
    
            PR tree-optimization/81549
            * gcc.dg/tree-ssa/pr81549.c: New test.
            * gcc.dg/tree-ssa/pr81549-2.c: New test.
    
    Signed-off-by: Naveen <[email protected]>

Diff:
---
 gcc/testsuite/gcc.dg/tree-ssa/pr81549-2.c | 46 +++++++++++++++++++++++++++++++
 gcc/testsuite/gcc.dg/tree-ssa/pr81549.c   | 28 +++++++++++++++++++
 2 files changed, 74 insertions(+)

diff --git a/gcc/testsuite/gcc.dg/tree-ssa/pr81549-2.c b/gcc/testsuite/gcc.dg/tree-ssa/pr81549-2.c
new file mode 100644
index 000000000000..236ef0cabd02
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/tree-ssa/pr81549-2.c
@@ -0,0 +1,46 @@
+/* PR tree-optimization/81549 */
+/* { dg-do run } */
+/* { dg-options "-O2" } */
+
+int a[4];
+
+__attribute__((noipa)) int
+f (int n)
+{
+  int t0 = a[0];
+  int t1 = a[1];
+
+  for (int i = 0; i < n; ++i)
+    {
+      t0 = t1;
+      t1 = 2;
+    }
+
+  return t0;
+}
+
+__attribute__((noipa)) int
+g (void)
+{
+  int t0 = a[0];
+  int t1 = a[1];
+
+  for (int i = 0; i < 1; ++i)
+    {
+      t0 = t1;
+      t1 = 2;
+    }
+
+  return t0;
+}
+
+int
+main (void)
+{
+  a[0] = 11;
+  a[1] = 22;
+
+  if (f (0) != 11 || f (1) != 22 || f (2) != 2 || g () != 22)
+    __builtin_abort ();
+  return 0;
+}
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/pr81549.c b/gcc/testsuite/gcc.dg/tree-ssa/pr81549.c
new file mode 100644
index 000000000000..fdbe79ab1c55
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/tree-ssa/pr81549.c
@@ -0,0 +1,28 @@
+/* PR tree-optimization/81549 */
+/* { dg-do compile } */
+/* { dg-options "-O2 -fdump-tree-sccp-details -fdump-tree-optimized" } */
+
+int a[10000];
+
+int
+f (void)
+{
+  int t0 = a[0];
+  int t1 = a[1];
+
+  for (int i = 0; i < 100; ++i)
+    {
+      a[i] = 1;
+      t0 = t1;
+      t1 = 2;
+    }
+
+  a[100] = t0;
+  a[101] = t1;
+  return t0 + t1;
+}
+
+/* { dg-final { scan-tree-dump-times "with expr: 2" 1 "sccp" } } */
+/* { dg-final { scan-tree-dump {a\[100\] = 2;} "sccp" } } */
+/* { dg-final { scan-tree-dump {a\[101\] = 2;} "sccp" } } */
+/* { dg-final { scan-tree-dump "return 4;" "optimized" } } */
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.