/* This testcase is to make sure we have i in referenced vars and that we properly compute aliasing for the loads and stores. */ extern void abort (void); static int i; static int *p = &i; int __attribute__((noinline)) foo(int *q) { *p = 1; *q = 2; return *p; } int __attribute__((noinline)) bar(int *q) { *q = 2; *p = 1; return *q; } int main() { int j = 0; if (foo(&i) != 2) abort (); if (bar(&i) != 1) abort (); if (foo(&j) != 1) abort (); if (j != 2) abort (); if (bar(&j) != 2) abort (); if (j != 2) abort (); return 0; }