[Bug c/91031] New: wrong code generated when using compound literal
crigler at users dot sourceforge.net
gcc-bugzilla@gcc.gnu.org
Fri Jun 28 13:54:00 GMT 2019
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91031
Bug ID: 91031
Summary: wrong code generated when using compound literal
Product: gcc
Version: 9.1.1
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c
Assignee: unassigned at gcc dot gnu.org
Reporter: crigler at users dot sourceforge.net
Target Milestone: ---
typedef long unsigned int size_t;
void abort (void);
int strcmp(const char *a, const char *b);
size_t strlen (const char *__s);
typedef struct
{
size_t size;
const char *buffer;
} String;
void testme(const String *s)
{
if (s->size != strlen("testme"))
abort();
if (strcmp(s->buffer, "testme") != 0)
abort();
}
int main()
{
const String *s = (void *)0;
if (!s)
{
s = &(const String){.buffer = "testme", .size =
strlen("testme")};
}
testme(s);
}
Using GCC 9, s is left uninitialized when testme is called:
$ gcc-9.1 -O2 g.c; ./a.out
Aborted
More information about the Gcc-bugs
mailing list