27 lines
400 B
C
27 lines
400 B
C
/* struct X is complete in this TU, this causes us to not merge Y and
|
|
thus assign different alias-sets to them. */
|
|
struct X
|
|
{
|
|
int i;
|
|
};
|
|
struct Y
|
|
{
|
|
struct X *p;
|
|
int i;
|
|
};
|
|
extern void abort (void);
|
|
extern void foo(struct Y *);
|
|
int __attribute__((noinline)) bar(struct Y *p)
|
|
{
|
|
p->i = 0;
|
|
foo (p);
|
|
return p->i;
|
|
}
|
|
int main()
|
|
{
|
|
struct Y y;
|
|
if (bar (&y) != 1)
|
|
abort ();
|
|
return 0;
|
|
}
|