[Bug c/94815] Abusive -Wrestrict warning with sprintf
vincent.riviere at freesbee dot fr
gcc-bugzilla@gcc.gnu.org
Tue Apr 28 15:02:21 GMT 2020
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94815
Vincent Riviere <vincent.riviere at freesbee dot fr> changed:
What |Removed |Added
----------------------------------------------------------------------------
Resolution|WONTFIX |---
Status|RESOLVED |REOPENED
--- Comment #4 from Vincent Riviere <vincent.riviere at freesbee dot fr> ---
Thanks for your explanations.
But apologies, I oversimplified my real-world testcase. The one below is more
realistic, and still triggers the warning with -O2
$ cat foo.c && m68k-elf-gcc -c foo.c -Wall -O2
char *strcpy(char *, const char *);
int sprintf(char *, const char *, ...);
char* myalloc(int n) __attribute__((alloc_size(1)));
void f(void)
{
char* buf = myalloc(30);
char* str1 = buf;
char* str2 = buf + 10;
char* str3 = buf + 20;
strcpy(str3, "123");
sprintf(str2, "ABC%s", str3);
sprintf(str1, "DEF%s", str2);
}
foo.c: In function 'f':
foo.c:15:5: warning: 'sprintf' argument 3 may overlap destination object 'buf'
[-Wrestrict]
15 | sprintf(str1, "DEF%s", str2);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
More information about the Gcc-bugs
mailing list