X-Git-Url: https://oss.titaniummirror.com/gitweb?a=blobdiff_plain;f=gcc%2Ftestsuite%2Fgcc.c-torture%2Fexecute%2F20000917-1.c;fp=gcc%2Ftestsuite%2Fgcc.c-torture%2Fexecute%2F20000917-1.c;h=0000000000000000000000000000000000000000;hb=6fed43773c9b0ce596dca5686f37ac3fc0fa11c0;hp=05b00ffe699b37066896b96b9470635b2b17dd73;hpb=27b11d56b743098deb193d510b337ba22dc52e5c;p=msp430-gcc.git diff --git a/gcc/testsuite/gcc.c-torture/execute/20000917-1.c b/gcc/testsuite/gcc.c-torture/execute/20000917-1.c deleted file mode 100644 index 05b00ffe..00000000 --- a/gcc/testsuite/gcc.c-torture/execute/20000917-1.c +++ /dev/null @@ -1,42 +0,0 @@ -/* 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); -}