[gcc r17-2735] testsuite: Add C++ testcase for PR 126296: `<=>` folding into `<>`.

Andrea Pinski via Gcc-cvs <[email protected]>
Newsgroups gmane.comp.gcc.cvs
Message-ID <[email protected]>
https://gcc.gnu.org/g:1c69a96d20cbfd4e9a36ee8a6bff8591150424aa

commit r17-2735-g1c69a96d20cbfd4e9a36ee8a6bff8591150424aa
Author: Andrea Pinski <[email protected]>
Date:   Mon Jul 27 15:06:07 2026 -0700

    testsuite: Add C++ testcase for PR 126296: `<=>` folding into `<>`.
    
    This adds 2 testcases for fp: `(i <=> j > 0) | (i <=> j < 0)`.
    The trapping version was fixed by r17-2709-gde8be0eb05d951
    while the non-trapping version was fixed earlier by
    r17-2129-gea8c74c074925b.
    Since we didn't have a testcase for these cases before,
    it would be a good idea to have them.
    
    Pushed as obvious after testing to make sure they work on x86_64-linux-gnu.
    
            PR tree-optimization/126296
    
    gcc/testsuite/ChangeLog:
    
            * g++.dg/tree-ssa/pr126296-1.C: New test.
            * g++.dg/tree-ssa/pr126296-2.C: New test.
    
    Signed-off-by: Andrea Pinski <[email protected]>

Diff:
---
 gcc/testsuite/g++.dg/tree-ssa/pr126296-1.C | 20 ++++++++++++++++++++
 gcc/testsuite/g++.dg/tree-ssa/pr126296-2.C | 20 ++++++++++++++++++++
 2 files changed, 40 insertions(+)

diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr126296-1.C b/gcc/testsuite/g++.dg/tree-ssa/pr126296-1.C
new file mode 100644
index 000000000000..9859d4ba2d2c
--- /dev/null
+++ b/gcc/testsuite/g++.dg/tree-ssa/pr126296-1.C
@@ -0,0 +1,20 @@
+// PR tree-optimization/126296
+// { dg-do compile { target c++20 } }
+// { dg-options "-O2 -g0 -ftrapping-math -fdump-tree-optimized" }
+// { dg-final { scan-tree-dump-times "\[ij]_\[0-9]+\\(D\\) <> \[ij]_\[0-9]+\\(D\\)" 1 "optimized" } }
+// { dg-final { scan-tree-dump-times "i_\[0-9]+\\(D\\) <> 5\\.0" 1 "optimized" } }
+// { dg-final { scan-tree-dump-not "if " "optimized" } }
+
+#include <compare>
+
+#define A __attribute__((noipa))
+A bool f1 (double i, double j)
+{
+  auto c = i <=> j;
+  return (c < 0) | (c > 0);
+}
+A bool f2 (double i)
+{
+  auto c = i <=> 5.0;
+  return (c < 0) | (c > 0);
+}
diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr126296-2.C b/gcc/testsuite/g++.dg/tree-ssa/pr126296-2.C
new file mode 100644
index 000000000000..bbddf885b73c
--- /dev/null
+++ b/gcc/testsuite/g++.dg/tree-ssa/pr126296-2.C
@@ -0,0 +1,20 @@
+// PR tree-optimization/126296
+// { dg-do compile { target c++20 } }
+// { dg-options "-O2 -g0 -fno-trapping-math -fdump-tree-optimized" }
+// { dg-final { scan-tree-dump-times "\[ij]_\[0-9]+\\(D\\) <> \[ij]_\[0-9]+\\(D\\)" 1 "optimized" } }
+// { dg-final { scan-tree-dump-times "i_\[0-9]+\\(D\\) <> 5\\.0" 1 "optimized" } }
+// { dg-final { scan-tree-dump-not "if " "optimized" } }
+
+#include <compare>
+
+#define A __attribute__((noipa))
+A bool f1 (double i, double j)
+{
+  auto c = i <=> j;
+  return (c < 0) | (c > 0);
+}
+A bool f2 (double i)
+{
+  auto c = i <=> 5.0;
+  return (c < 0) | (c > 0);
+}
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.