https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87052
Bug ID: 87052
Summary: STRING_CST printing incomplete in Gimple dumps
Product: gcc
Version: 9.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: middle-end
Assignee: unassigned at gcc dot gnu.org
Reporter: msebor at gcc dot gnu.org
Target Milestone: ---
STRING_CST nodes with embedded nuls are formatted in Gimple dumps only up to
the first nul. Characters beyond the first nul are not printed. This makes
the dumps incomplete (and raises the question of whether the code is even
correct.) This has recently been exacerbated by transforming braced-list
initialized constant character arrays into STRING_CSTs (r263511).
$ cat f.c && gcc -O2 -S -Wall -fdump-tree-gimple=/dev/stdout f.c
void f (char *d)
{
const char a[3] = "\000ab";
__builtin_strcpy (d, a);
}
void g (char *d)
{
const char a[] = { 0, 'a', 'b', 'b' };
__builtin_strcpy (d, a);
}
f (char * d)
{
const char a[3];
try
{
a = "";
__builtin_strcpy (d, &a);
}
finally
{
a = {CLOBBER};
}
}
g (char * d)
{
const char a[4];
try
{
a = "";
__builtin_strcpy (d, &a);
}
finally
{
a = {CLOBBER};
}
}