On Wed, Mar 12, 2025 at 9:43 AM H.J. Lu <hjl.to...@gmail.com> wrote: > > On Tue, Mar 11, 2025 at 2:58 AM Richard Biener <rguent...@suse.de> wrote: > > > > The following makes sure to convert the folded expression to the > > original expression type. > > > > Bootstrapped and tested on x86_64-unknown-linux-gnu, OK? > > > > Thanks, > > Richard. > > > > PR middle-end/119204 > > * builtins.cc (fold_builtin_strcspn): Preserve the original > > expression type. > > > > * gcc.dg/pr119204.c: New testcase. > > --- > > gcc/builtins.cc | 5 +++-- > > gcc/testsuite/gcc.dg/pr119204.c | 13 +++++++++++++ > > 2 files changed, 16 insertions(+), 2 deletions(-) > > create mode 100644 gcc/testsuite/gcc.dg/pr119204.c > > > > diff --git a/gcc/builtins.cc b/gcc/builtins.cc > > index c8841032f03..02556e6615a 100644 > > --- a/gcc/builtins.cc > > +++ b/gcc/builtins.cc > > @@ -11360,7 +11360,7 @@ fold_builtin_strcspn (location_t loc, tree expr, > > tree s1, tree s2) > > { > > /* Evaluate and ignore argument s2 in case it has > > side-effects. */ > > - return omit_one_operand_loc (loc, size_type_node, > > + return omit_one_operand_loc (loc, TREE_TYPE (expr), > > size_zero_node, s2); > > } > > > > @@ -11375,7 +11375,8 @@ fold_builtin_strcspn (location_t loc, tree expr, > > tree s1, tree s2) > > if (!fn) > > return NULL_TREE; > > > > - return build_call_expr_loc (loc, fn, 1, s1); > > + return fold_convert_loc (loc, TREE_TYPE (expr), > > + build_call_expr_loc (loc, fn, 1, s1)); > > } > > return NULL_TREE; > > } > > diff --git a/gcc/testsuite/gcc.dg/pr119204.c > > b/gcc/testsuite/gcc.dg/pr119204.c > > new file mode 100644 > > index 00000000000..ecbd8dd1c22 > > --- /dev/null > > +++ b/gcc/testsuite/gcc.dg/pr119204.c > > @@ -0,0 +1,13 @@ > > +/* { dg-do compile } */ > > +/* { dg-options "-w" } */ > > + > > +extern void abort(void); > > +extern long long strcspn(const char *, const char *); > > + > > +void main_test(void) { > > + const char *const s1 = "hello world"; > > + char dst[64], *d2; > > + > > + if (strcspn(++d2 + 5, "") != 5 || d2 != dst + 1) > > + abort(); > > +} > > -- > > 2.43.0 > > This caused: > > https://gcc.gnu.org/pipermail/gcc-regression/2025-March/081862.html
Fixed with r15-7981 already. https://gcc.gnu.org/pipermail/gcc-cvs/2025-March/418506.html https://gcc.gnu.org/pipermail/gcc-patches/2025-March/677372.html Thanks, Andrew > > -- > H.J.