https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113706
--- Comment #12 from GCC Commits <cvs-commit at gcc dot gnu.org> --- The trunk branch has been updated by Jason Merrill <ja...@gcc.gnu.org>: https://gcc.gnu.org/g:c3bc2787b8beb7aae67fdf2a7f7271a9a4edca7c commit r15-91-gc3bc2787b8beb7aae67fdf2a7f7271a9a4edca7c Author: Jason Merrill <ja...@redhat.com> Date: Mon Feb 12 18:24:00 2024 -0500 c++: const void* memchr [PR113706] The C++ standard specifies that the <string.h> functions have const and non-const overloads, unlike C's single function with const argument and non-const return. Many systems don't actually implement this, but only add an overload with non-const argument, so both end up having non-const return. Solaris <string.h> does what the standard says, but we were penalizing it by not recognizing the const overload as the built-in memchr. PR c++/113706 gcc/cp/ChangeLog: * decl.cc (decls_match): Handle memchr return type being const-qualified. gcc/testsuite/ChangeLog: * g++.dg/opt/const-builtin1.C: New test. * c-c++-common/pr103798-2.c: Remove xfail.