summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/builtins.c6
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/pr37976.c6
4 files changed, 20 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 4807a04bd93..b811061b3df 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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
diff --git a/gcc/builtins.c b/gcc/builtins.c
index 85d61b5681c..a1bba0d7160 100644
--- a/gcc/builtins.c
+++ b/gcc/builtins.c
@@ -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). */
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index db83bac28e3..020d589ad70 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -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
index 00000000000..6b2ba63c0f2
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/compile/pr37976.c
@@ -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));)
+ ;
+}