Commit 859e203f by Greg McGary Committed by Greg McGary

20000917-1.c: New test.

	* gcc.c-torture/execute/20000917-1.c: New test.
	* gcc.c-torture/execute/20000917-1.x: XFAIL.

From-SVN: r36466
parent 98c13cc0
2000-09-17 Greg McGary <greg@mcgary.org>
* gcc.c-torture/execute/20000917-1.c: New test.
* gcc.c-torture/execute/20000917-1.x: XFAIL.
Sat 16-Sep-2000 08:14:58 BST Neil Booth <NeilB@earthling.net>
* gcc.dg/cpp/macro2.c: Testcase for multi-context arguments
......@@ -90,8 +95,8 @@ Tue Sep 12 18:32:07 2000 J"orn Rennecke <amylaar@redhat.co.uk>
2000-09-06 Greg McGary <greg@mcgary.org>
* gcc.c-torture/20000906.c: New test.
* gcc.c-torture/20000906.x: Expect failure for ix86 at `-O2'.
* gcc.c-torture/execute/20000906-1.c: New test.
* gcc.c-torture/execute/20000906-1.x: Expect failure for ix86 at `-O2'.
2000-09-05 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
......
/* This bug exists in gcc-2.95, egcs-1.1.2, gcc-2.7.2 and probably
every other version as well. */
typedef struct int3 { int a, b, c; } int3;
int3
one (void)
{
return (int3) { 1, 1, 1 };
}
int3
zero (void)
{
return (int3) { 0, 0, 0 };
}
int
main (void)
{
int3 a;
/* gcc allocates a temporary for the inner expression statement
to store the return value of `one'.
gcc frees the temporaries for the inner expression statement.
gcc realloates the same temporary slot to store the return
value of `zero'.
gcc expands the call to zero ahead of the expansion of the
statement expressions. The temporary gets the value of `zero'.
gcc expands statement expressions and the stale temporary is
clobbered with the value of `one'. The bad value is copied from
the temporary into *&a. */
*({ ({ one (); &a; }); }) = zero ();
if (a.a && a.b && a.c)
abort ();
exit (0);
}
# Never has worked
set torture_execute_xfail "*-*-*"
return 0
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment