blob: c69a285b287812ce4f1859db81bf4de73eaa7cf6 [file] [log] [blame]
/* Verify that IPA-CP can make edges direct based on aggregate contents. */
/* { dg-do compile } */
/* { dg-options "-O3 -fno-early-inlining -fno-ipa-sra -fdump-ipa-cp -fdump-ipa-inline" } */
struct S
{
int i;
void (*f)(struct S *);
unsigned u;
};
struct U
{
struct U *next;
struct S s;
short a[8];
};
extern void non_existent(struct S *p, int);
static void hooray1 (struct S *p)
{
non_existent (p, 1);
}
static __attribute__ ((noinline))
void hiphip1 (struct S *p)
{
p->f (p);
}
int test1 (void)
{
struct S s;
s.i = 1234;
s.f = hooray1;
s.u = 1001;
hiphip1 (&s);
return 0;
}
/* { dg-final { scan-ipa-dump "ipa-prop: Discovered an indirect call to a known target" "cp" } } */
/* { dg-final { scan-ipa-dump "hooray1\[^\\n\]*inline copy in hiphip1" "inline" } } */