diff options
author | James E Wilson <wilson@specifixinc.com> | 2005-11-18 18:25:25 -0800 |
---|---|---|
committer | Jim Wilson <wilson@gcc.gnu.org> | 2005-11-18 18:25:25 -0800 |
commit | 817f9ef2e52bbe4568264487acfa86c5bb2882d4 (patch) | |
tree | 875aa41b0e0cf9f95daa844c1be7324c0213984a | |
parent | 7b767e311d47363e5f0f688faa121fe28798a393 (diff) | |
download | gcc-817f9ef2e52bbe4568264487acfa86c5bb2882d4.zip gcc-817f9ef2e52bbe4568264487acfa86c5bb2882d4.tar.gz gcc-817f9ef2e52bbe4568264487acfa86c5bb2882d4.tar.bz2 |
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
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/builtins.c | 4 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/builtin-strstr.c | 8 |
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, ""); +} |