Fix spurious warning for strstr (s, "").

* builtins.c (fold_builtin_strstr): Pass s1 through fold_convert before
returning it.
* gcc.dg/builtin-strstr.c: New.

From-SVN: r107206
This commit is contained in:
James E Wilson 2005-11-18 18:25:25 -08:00 committed by Jim Wilson
parent 7b767e311d
commit 817f9ef2e5
4 changed files with 20 additions and 1 deletions

View File

@ -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.

View File

@ -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;

View File

@ -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,

View File

@ -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, "");
}