mirror of
https://github.com/nArnoSNES/tcc-65816.git
synced 2024-06-11 22:29:28 +00:00
49 lines
725 B
C
49 lines
725 B
C
/* We used to mis-compile this testcase as we did not know that
|
|
&a+offsetof(b,a) was the same as &a.b */
|
|
struct A
|
|
{
|
|
int t;
|
|
int i;
|
|
};
|
|
|
|
void
|
|
bar (float *p)
|
|
{
|
|
*p = 5.2;
|
|
}
|
|
|
|
int
|
|
foo(struct A *locp, int i, int str)
|
|
{
|
|
float f, g, *p;
|
|
int T355;
|
|
int *T356;
|
|
/* Currently, the alias analyzer has limited support for handling
|
|
aliases of structure fields when no other variables are aliased.
|
|
Introduce additional aliases to confuse it. */
|
|
p = i ? &g : &f;
|
|
bar (p);
|
|
if (*p > 0.0)
|
|
str = 1;
|
|
|
|
T355 = locp->i;
|
|
T356 = &locp->i;
|
|
*T356 = str;
|
|
T355 = locp->i;
|
|
|
|
return T355;
|
|
}
|
|
|
|
main ()
|
|
{
|
|
struct A loc;
|
|
int str;
|
|
|
|
loc.i = 2;
|
|
str = foo (&loc, 10, 3);
|
|
if (str!=1)
|
|
abort ();
|
|
return 0;
|
|
}
|
|
|