[Bug c/84919] [8/9/10 Regression] error: passing argument 1 to restrict-qualified parameter aliases with argument 5 [-Werror=restrict]
msebor at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Wed Dec 4 22:24:00 GMT 2019
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84919
--- Comment #17 from Martin Sebor <msebor at gcc dot gnu.org> ---
The patch below avoids the warning. Unfortunately, as a result of bug 92666,
it triggers another bogus warning during bootstrap.
Index: gcc/c-family/c-common.c
===================================================================
--- gcc/c-family/c-common.c (revision 278975)
+++ gcc/c-family/c-common.c (working copy)
@@ -5763,8 +5763,26 @@ check_function_arguments (location_t loc, const_tr
if (warn_format)
check_function_sentinel (fntype, nargs, argarray);
- if (warn_restrict)
- warned_p |= check_function_restrict (fndecl, fntype, nargs, argarray);
+ if (fndecl && fndecl_built_in_p (fndecl, BUILT_IN_NORMAL))
+ {
+ switch (DECL_FUNCTION_CODE (fndecl))
+ {
+ case BUILT_IN_SPRINTF:
+ case BUILT_IN_SPRINTF_CHK:
+ case BUILT_IN_SNPRINTF:
+ case BUILT_IN_SNPRINTF_CHK:
+ /* Let the sprintf pass handle these. */
+ return warned_p;
+
+ default:
+ break;
+ }
+ }
+
+ /* check_function_restrict sets the DECL_READ_P for arguments
+ so it must be called unconiditionally. */
+ warned_p |= check_function_restrict (fndecl, fntype, nargs, argarray);
+
return warned_p;
}
More information about the Gcc-bugs
mailing list