]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR middle-end/37976 (ICE in insert_into_preds_of_block)
authorRichard Guenther <rguenther@suse.de>
Sat, 1 Nov 2008 12:47:38 +0000 (12:47 +0000)
committerRichard Biener <rguenth@gcc.gnu.org>
Sat, 1 Nov 2008 12:47:38 +0000 (12:47 +0000)
2008-11-01  Richard Guenther  <rguenther@suse.de>

PR middle-end/37976
* builtins.c (fold_builtin_strspn): Return a size_t.
(fold_builtin_strcspn): Likewise.

* gcc.c-torture/compile/pr37976.c: New testcase.

From-SVN: r141514

gcc/ChangeLog
gcc/builtins.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.c-torture/compile/pr37976.c [new file with mode: 0644]

index 4807a04bd93b13484cda378fc385417553e4323d..b811061b3df6925bbba5c55af88ba811c9c089b4 100644 (file)
@@ -1,3 +1,9 @@
+2008-11-01  Richard Guenther  <rguenther@suse.de>
+
+       PR middle-end/37976
+       * builtins.c (fold_builtin_strspn): Return a size_t.
+       (fold_builtin_strcspn): Likewise.
+
 2008-10-31  Nathan Froyd  <froydnj@codesourcery.com>
 
        * config/rs6000/rs6000.c (rs6000_file_start): Output gnu
index 85d61b5681c279b02e0320bef374d498a023cef4..a1bba0d716081d232b6028303aa397fcc918b065 100644 (file)
@@ -11398,7 +11398,7 @@ fold_builtin_strspn (tree s1, tree s2)
       if ((p1 && *p1 == '\0') || (p2 && *p2 == '\0'))
        /* Evaluate and ignore both arguments in case either one has
           side-effects.  */
-       return omit_two_operands (integer_type_node, integer_zero_node,
+       return omit_two_operands (size_type_node, size_zero_node,
                                  s1, s2);
       return NULL_TREE;
     }
@@ -11444,8 +11444,8 @@ fold_builtin_strcspn (tree s1, tree s2)
        {
          /* Evaluate and ignore argument s2 in case it has
             side-effects.  */
-         return omit_one_operand (integer_type_node,
-                                  integer_zero_node, s2);
+         return omit_one_operand (size_type_node,
+                                  size_zero_node, s2);
        }
 
       /* If the second argument is "", return __builtin_strlen(s1).  */
index db83bac28e30bc8f8502b918a64f6575a77d174c..020d589ad70ec17fbadb452919a9b09ff8293d0e 100644 (file)
@@ -1,3 +1,8 @@
+2008-11-01  Richard Guenther  <rguenther@suse.de>
+
+       PR middle-end/37976
+       * gcc.c-torture/compile/pr37976.c: New testcase.
+
 2008-11-01  Dennis Wassel  <dennis.wassel@gmail.com>
 
        PR fortran/37159
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr37976.c b/gcc/testsuite/gcc.c-torture/compile/pr37976.c
new file mode 100644 (file)
index 0000000..6b2ba63
--- /dev/null
@@ -0,0 +1,6 @@
+void percent_x(int ch, char *p, char* ok_chars)
+{
+  char *cp = ch == 'a' ? p : "";
+  for (;*(cp += __builtin_strspn (cp, ok_chars));)
+    ;
+}