On Mon, May 14, 2012 at 02:08:34PM +0200, Bernd Schmidt wrote: > --- gcc/builtins.def (revision 187411) > +++ gcc/builtins.def (working copy) > @@ -532,10 +532,10 @@ DEF_EXT_LIB_BUILTIN (BUILT_IN_BZERO, > DEF_EXT_LIB_BUILTIN (BUILT_IN_INDEX, "index", > BT_FN_STRING_CONST_STRING_INT, ATTR_PURE_NOTHROW_NONNULL_LEAF) > DEF_LIB_BUILTIN (BUILT_IN_MEMCHR, "memchr", > BT_FN_PTR_CONST_PTR_INT_SIZE, ATTR_PURE_NOTHROW_NONNULL_LEAF) > DEF_LIB_BUILTIN (BUILT_IN_MEMCMP, "memcmp", > BT_FN_INT_CONST_PTR_CONST_PTR_SIZE, ATTR_PURE_NOTHROW_NONNULL_LEAF) > -DEF_LIB_BUILTIN (BUILT_IN_MEMCPY, "memcpy", > BT_FN_PTR_PTR_CONST_PTR_SIZE, ATTR_NOTHROW_NONNULL_LEAF) > -DEF_LIB_BUILTIN (BUILT_IN_MEMMOVE, "memmove", > BT_FN_PTR_PTR_CONST_PTR_SIZE, ATTR_NOTHROW_NONNULL_LEAF) > +DEF_LIB_BUILTIN (BUILT_IN_MEMCPY, "memcpy", > BT_FN_PTR_PTR_CONST_PTR_SIZE, ATTR_RET1_NOTHROW_NONNULL_LEAF) > +DEF_LIB_BUILTIN (BUILT_IN_MEMMOVE, "memmove", > BT_FN_PTR_PTR_CONST_PTR_SIZE, ATTR_RET1_NOTHROW_NONNULL_LEAF) > DEF_EXT_LIB_BUILTIN (BUILT_IN_MEMPCPY, "mempcpy", > BT_FN_PTR_PTR_CONST_PTR_SIZE, ATTR_NOTHROW_NONNULL_LEAF) > -DEF_LIB_BUILTIN (BUILT_IN_MEMSET, "memset", BT_FN_PTR_PTR_INT_SIZE, > ATTR_NOTHROW_NONNULL_LEAF) > +DEF_LIB_BUILTIN (BUILT_IN_MEMSET, "memset", BT_FN_PTR_PTR_INT_SIZE, > ATTR_RET1_NOTHROW_NONNULL_LEAF) > DEF_EXT_LIB_BUILTIN (BUILT_IN_RINDEX, "rindex", > BT_FN_STRING_CONST_STRING_INT, ATTR_PURE_NOTHROW_NONNULL_LEAF) > DEF_EXT_LIB_BUILTIN (BUILT_IN_STPCPY, "stpcpy", > BT_FN_STRING_STRING_CONST_STRING, ATTR_NOTHROW_NONNULL_LEAF) > DEF_EXT_LIB_BUILTIN (BUILT_IN_STPNCPY, "stpncpy", > BT_FN_STRING_STRING_CONST_STRING_SIZE, ATTR_NOTHROW_NONNULL_LEAF) > @@ -543,7 +543,7 @@ DEF_EXT_LIB_BUILTIN (BUILT_IN_STRCASE > DEF_LIB_BUILTIN (BUILT_IN_STRCAT, "strcat", > BT_FN_STRING_STRING_CONST_STRING, ATTR_NOTHROW_NONNULL_LEAF) > DEF_LIB_BUILTIN (BUILT_IN_STRCHR, "strchr", > BT_FN_STRING_CONST_STRING_INT, ATTR_PURE_NOTHROW_NONNULL_LEAF) > DEF_LIB_BUILTIN (BUILT_IN_STRCMP, "strcmp", > BT_FN_INT_CONST_STRING_CONST_STRING, ATTR_PURE_NOTHROW_NONNULL_LEAF) > -DEF_LIB_BUILTIN (BUILT_IN_STRCPY, "strcpy", > BT_FN_STRING_STRING_CONST_STRING, ATTR_NOTHROW_NONNULL_LEAF) > +DEF_LIB_BUILTIN (BUILT_IN_STRCPY, "strcpy", > BT_FN_STRING_STRING_CONST_STRING, ATTR_RET1_NOTHROW_NONNULL_LEAF) > DEF_LIB_BUILTIN (BUILT_IN_STRCSPN, "strcspn", > BT_FN_SIZE_CONST_STRING_CONST_STRING, ATTR_PURE_NOTHROW_NONNULL_LEAF) > DEF_EXT_LIB_BUILTIN (BUILT_IN_STRDUP, "strdup", > BT_FN_STRING_CONST_STRING, ATTR_MALLOC_NOTHROW_NONNULL_LEAF) > DEF_EXT_LIB_BUILTIN (BUILT_IN_STRNDUP, "strndup", > BT_FN_STRING_CONST_STRING_SIZE, ATTR_MALLOC_NOTHROW_NONNULL_LEAF) > @@ -757,8 +757,8 @@ DEF_BUILTIN_STUB (BUILT_IN_ALLOCA_WITH_A > > /* Object size checking builtins. */ > DEF_GCC_BUILTIN (BUILT_IN_OBJECT_SIZE, "object_size", > BT_FN_SIZE_CONST_PTR_INT, ATTR_PURE_NOTHROW_LEAF_LIST) > -DEF_EXT_LIB_BUILTIN (BUILT_IN_MEMCPY_CHK, "__memcpy_chk", > BT_FN_PTR_PTR_CONST_PTR_SIZE_SIZE, ATTR_NOTHROW_NONNULL_LEAF) > -DEF_EXT_LIB_BUILTIN (BUILT_IN_MEMMOVE_CHK, "__memmove_chk", > BT_FN_PTR_PTR_CONST_PTR_SIZE_SIZE, ATTR_NOTHROW_NONNULL_LEAF) > +DEF_EXT_LIB_BUILTIN (BUILT_IN_MEMCPY_CHK, "__memcpy_chk", > BT_FN_PTR_PTR_CONST_PTR_SIZE_SIZE, ATTR_RET1_NOTHROW_NONNULL_LEAF) > +DEF_EXT_LIB_BUILTIN (BUILT_IN_MEMMOVE_CHK, "__memmove_chk", > BT_FN_PTR_PTR_CONST_PTR_SIZE_SIZE, ATTR_RET1_NOTHROW_NONNULL_LEAF) > DEF_EXT_LIB_BUILTIN (BUILT_IN_MEMPCPY_CHK, "__mempcpy_chk", > BT_FN_PTR_PTR_CONST_PTR_SIZE_SIZE, ATTR_NOTHROW_NONNULL_LEAF) > DEF_EXT_LIB_BUILTIN (BUILT_IN_MEMSET_CHK, "__memset_chk", > BT_FN_PTR_PTR_INT_SIZE_SIZE, ATTR_NOTHROW_NONNULL_LEAF) > DEF_EXT_LIB_BUILTIN (BUILT_IN_STPCPY_CHK, "__stpcpy_chk", > BT_FN_STRING_STRING_CONST_STRING_SIZE, ATTR_NOTHROW_NONNULL_LEAF)
You are missing also BUILT_IN_STRNCPY, BUILT_IN_MEMSET_CHK, BUILT_IN_STRCPY_CHK and BUILT_IN_STRNCPY_CHK. BUILT_IN_ASSUME_ALIGNED also does, but it should be optimized away far before expansion already. Jakub