aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/builtins.c4
-rw-r--r--gcc/testsuite/ChangeLog4
-rw-r--r--gcc/testsuite/gcc.dg/builtin-strstr.c8
4 files changed, 20 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index c4f105f..b128468 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2005-11-18 James E Wilson <wilson@specifix.com>
+
+ * builtins.c (fold_builtin_strstr): Pass s1 through fold_convert before
+ returning it.
+
2005-11-18 Mike Stump <mrs@apple.com>
* c-common.c (handle_cleanup_attribute): Use a lang hook for lookup_name.
diff --git a/gcc/builtins.c b/gcc/builtins.c
index 359ff64..6cca5fb 100644
--- a/gcc/builtins.c
+++ b/gcc/builtins.c
@@ -9199,8 +9199,10 @@ fold_builtin_strstr (tree arglist, tree type)
return fold_convert (type, tem);
}
+ /* The argument is const char *, and the result is char *, so we need
+ a type conversion here to avoid a warning. */
if (p2[0] == '\0')
- return s1;
+ return fold_convert (type, s1);
if (p2[1] != '\0')
return 0;
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 046330f..570041e 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,7 @@
+2005-11-18 James E Wilson <wilson@specifix.com>
+
+ * gcc.dg/builtin-strstr.c: New.
+
2005-11-18 Richard Henderson <rth@redhat.com>
* gcc.target/ia64/20010423-1.c, gcc.target/ia64/20020313-1.c,
diff --git a/gcc/testsuite/gcc.dg/builtin-strstr.c b/gcc/testsuite/gcc.dg/builtin-strstr.c
new file mode 100644
index 0000000..b8201f4
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/builtin-strstr.c
@@ -0,0 +1,8 @@
+/* The strstr call is expanded to just "s", which should not result in a
+ warning about discarding qualifiers in an assignment. */
+/* { dg-do compile } */
+extern char * strstr (const char *s1, const char * s2);
+void foo(const char *s){
+ char * cp;
+ cp = strstr(s, "");
+}