re PR middle-end/24820 (SEGV in integer_valued_real_p at gcc/builtins.c:6711)
authorAndrew Pinski <pinskia@physics.uc.edu>
Sun, 13 Nov 2005 06:18:48 +0000 (06:18 +0000)
committerAndrew Pinski <pinskia@gcc.gnu.org>
Sun, 13 Nov 2005 06:18:48 +0000 (22:18 -0800)
2005-11-13  Andrew Pinski  <pinskia@physics.uc.edu>

        PR middle-end/24820
        * testsuite/gcc.dg/pr24820.c: New test.
2005-11-13  Andrew Pinski  <pinskia@physics.uc.edu>

        PR middle-end/24820
        * builtins.c (integer_valued_real_p): Add break in
        REAL_CST having TREE_OVERFLOW set.

From-SVN: r106851

gcc/ChangeLog
gcc/builtins.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/pr24820.c [new file with mode: 0644]

index 530fefd83e44cf9c6586b055804d7545debaae08..f7ddeffe004a8aa6b7fdad4af9acb8ac2cb1c7d7 100644 (file)
@@ -1,3 +1,9 @@
+2005-11-13  Andrew Pinski  <pinskia@physics.uc.edu>
+
+       PR middle-end/24820
+       * builtins.c (integer_valued_real_p): Add break in
+       REAL_CST having TREE_OVERFLOW set.
+
 2005-11-13  Zdenek Dvorak  <dvorakz@suse.cz>
 
        * tree-ssa-loop-ivopts.c (get_address_cost): Prevent splitting
index a9fe858250187c566a9d412177abd131c1af831a..359ff646e987b3973046ce1604a813a4addf3378 100644 (file)
@@ -6704,6 +6704,7 @@ integer_valued_real_p (tree t)
        real_trunc (&cint, TYPE_MODE (TREE_TYPE (t)), &c);
        return real_identical (&c, &cint);
       }
+      break;
 
     case NOP_EXPR:
       {
index 388ea7e2f77f26e4dec4fa8482c48ca972b0241a..805aa20af2425bdffeb150ce684d04730d30f935 100644 (file)
@@ -1,3 +1,8 @@
+2005-11-13  Andrew Pinski  <pinskia@physics.uc.edu>
+
+       PR middle-end/24820
+       * testsuite/gcc.dg/pr24820.c: New test.
+
 2005-11-13  Zdenek Dvorak  <dvorakz@suse.cz>
 
        * gcc.dg/tree-ssa/loop-2.c: Fix outcome.
diff --git a/gcc/testsuite/gcc.dg/pr24820.c b/gcc/testsuite/gcc.dg/pr24820.c
new file mode 100644 (file)
index 0000000..0482ca3
--- /dev/null
@@ -0,0 +1,12 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -ffast-math" } */
+
+double floor (double);
+double bar (double sum)
+{
+  int i;
+  for (i = 0; i < 256; i++)
+   sum += floor (0.5 + (i - 128));
+  return sum;
+}
+