gcc/libmudflap/testsuite/libmudflap.c/pass53-frag.c
Frank Ch. Eigler 306ae32b68 fail35-,pass53-,pass54-frag.c: New tests.
2004-10-28  Frank Ch. Eigler  <fche@redhat.com>

	* testsuite/libmudflap.c/fail35-,pass53-,pass54-frag.c: New tests.
	* testsuite/libmudflap.c/pass35-frag.c: Correct embedded warning
	message.

From-SVN: r89783
2004-10-28 21:21:59 +00:00

42 lines
851 B
C

int foo1 ()
{
union { int l; char c[sizeof (int)]; } k1;
char *m;
k1.l = 0;
/* This test variant triggers ADDR_EXPR of k explicitly in order to
ensure it's registered with the runtime. */
m = k1.c;
k1.c [sizeof (int)-1] = m[sizeof (int)-2];
}
int foo2 ()
{
union { int l; char c[sizeof (int)]; } k2;
k2.l = 0;
/* Since this access is known-in-range, k need not be registered
with the runtime, but then this access better not be instrumented
either. */
k2.c [sizeof (int)-1] ++;
return k2.l;
}
int foo3idx = sizeof (int)-1;
int foo3 ()
{
union { int l; char c[sizeof (int)]; } k3;
k3.l = 0;
/* NB this test uses foo3idx, an extern variable, to defeat mudflap
known-in-range-index optimizations. */
k3.c [foo3idx] ++;
return k3.l;
}
int main ()
{
foo1 ();
foo2 ();
foo3 ();
return 0;
}