From: Jakub Jelinek Date: Fri, 22 Jun 2018 20:52:44 +0000 (+0200) Subject: backport: re PR c/84953 (misleading warning from strpbrk(x,"")) X-Git-Tag: releases/gcc-7.4.0~357 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=aeab2a087240170d090c627ada037890323ffbd4;p=thirdparty%2Fgcc.git backport: re PR c/84953 (misleading warning from strpbrk(x,"")) Backported from mainline 2018-03-20 Jakub Jelinek PR c/84953 * builtins.c (fold_builtin_strpbrk): For strpbrk(x, "") use type instead of TREE_TYPE (s1) for the return value. * gcc.dg/pr84953.c: New test. From-SVN: r261931 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 61772122ef37..83af672bc0d8 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -11,6 +11,10 @@ 2018-03-20 Jakub Jelinek + PR c/84953 + * builtins.c (fold_builtin_strpbrk): For strpbrk(x, "") use type + instead of TREE_TYPE (s1) for the return value. + PR target/84990 * dwarf2asm.c (dw2_output_indirect_constant_1): Temporarily turn off flag_section_anchors. diff --git a/gcc/builtins.c b/gcc/builtins.c index 75342b786def..767093f539f9 100644 --- a/gcc/builtins.c +++ b/gcc/builtins.c @@ -9270,7 +9270,7 @@ fold_builtin_strpbrk (location_t loc, tree s1, tree s2, tree type) if (p2[0] == '\0') /* strpbrk(x, "") == NULL. Evaluate and ignore s1 in case it had side-effects. */ - return omit_one_operand_loc (loc, TREE_TYPE (s1), integer_zero_node, s1); + return omit_one_operand_loc (loc, type, integer_zero_node, s1); if (p2[1] != '\0') return NULL_TREE; /* Really call strpbrk. */ diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 7fbcb42af6fb..ce51bb094f77 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,6 +1,11 @@ 2018-06-22 Jakub Jelinek Backported from mainline + 2018-03-20 Jakub Jelinek + + PR c/84953 + * gcc.dg/pr84953.c: New test. + 2018-03-19 Maxim Ostapenko PR sanitizer/78651 diff --git a/gcc/testsuite/gcc.dg/pr84953.c b/gcc/testsuite/gcc.dg/pr84953.c new file mode 100644 index 000000000000..723a8a67dda7 --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr84953.c @@ -0,0 +1,11 @@ +/* PR c/84953 */ +/* { dg-do compile } */ + +char *strpbrk (const char *, const char *); + +char * +test (char *p) +{ + p = strpbrk (p, ""); /* { dg-bogus "assignment discards 'const' qualifier from pointer target type" } */ + return p; +}