Just like PR 23134, here is another testcase for the aliasing thinking that the
address escapes but this time it has SFT's involved and we should not have a
V_MAY_DEF for k.i:
static void f(char *a)
{
*a = 1;
}
struct g
{
char i, j;
};
void h(void)
{
struct g k = {2, 2};
f(&k.j);
if (k.i != 2)
link_error ();
}
Compile with -O2 -fno-inline to force f not to inline.
--
Summary: Address (full struct) escapes even though the called
function does not cause it to escape
Product: gcc
Version: 4.1.0
Status: NEW
Keywords: missed-optimization, alias
Severity: enhancement
Priority: P2
Component: tree-optimization
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: pinskia at gcc dot gnu dot org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24169