https://gcc.gnu.org/g:ce9e59eb8cfd8740885614e7129970bcb040f7fd

commit r16-9500-gce9e59eb8cfd8740885614e7129970bcb040f7fd
Author: Jakub Jelinek <[email protected]>
Date:   Mon Aug 3 11:50:20 2026 +0200

    testsuite: Add testcase for already fixed PR [PR126576]
    
    This testcase got fixed with r17-2843, but the testcase is sufficiently
    different from the other one that it is worth having both.
    
    2026-08-03  Jakub Jelinek  <[email protected]>
    
            PR tree-optimization/126576
            * gcc.dg/torture/pr126576.c: New test.
    
    (cherry picked from commit 04e3459dfc6ecd1138ec6d4f0d1e6b9044576814)

Diff:
---
 gcc/testsuite/gcc.dg/torture/pr126576.c | 43 +++++++++++++++++++++++++++++++++
 1 file changed, 43 insertions(+)

diff --git a/gcc/testsuite/gcc.dg/torture/pr126576.c 
b/gcc/testsuite/gcc.dg/torture/pr126576.c
new file mode 100644
index 000000000000..c94c74370357
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/torture/pr126576.c
@@ -0,0 +1,43 @@
+/* PR tree-optimization/126576 */
+/* { dg-do run } */
+
+#if __DBL_MANT_DIG__ == 53 && __DBL_MAX_10_EXP__ == 308 \
+    && __DBL_HAS_INFINITY__ && __FLT_EVAL_METHOD__ == 0
+int v;
+
+[[gnu::noipa]] void
+bar (int x)
+{
+  v |= x;
+}
+
+[[gnu::noipa]] double
+foo (double x)
+{
+  double a = x * x;
+  if (__builtin_isinf (a) && !__builtin_isinf (x))
+    bar (1);
+  double b = a * 3.0;
+  if (__builtin_isinf (b) && !__builtin_isinf (a))
+    bar (2);
+  return b;
+}
+#endif
+
+int
+main ()
+{
+#if __DBL_MANT_DIG__ == 53 && __DBL_MAX_10_EXP__ == 308 \
+    && __DBL_HAS_INFINITY__ && __FLT_EVAL_METHOD__ == 0
+  foo (1e154);
+  if (v != 2)
+    __builtin_abort ();
+  v = 0;
+  foo (1e152);
+  if (v != 0)
+    __builtin_abort ();
+  foo (1e155);
+  if (v != 1)
+    __builtin_abort ();
+#endif    
+}

Reply via email to