diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 7f61d2aeddaf2d46ccdd54c170310a6aa4210205..2a49bd9419931858af6997a742117792af9f7b47 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,10 @@ +2000-08-03 Joseph S. Myers <jsm28@cam.ac.uk> + + * gcc.c-torture/execute/20000801-3.c, gcc.c-torture/20000801-4.c: + New tests. + * gcc.c-torture/execute/20000801-3.x, gcc/c-torture/20000801-4.x: + Xfail. + 2000-08-02 Geoff Keating <geoffk@cygnus.com> * lib/objc.exp (objc_target_compile): Look for libobjc.a in diff --git a/gcc/testsuite/gcc.c-torture/execute/20000801-3.c b/gcc/testsuite/gcc.c-torture/execute/20000801-3.c new file mode 100644 index 0000000000000000000000000000000000000000..8d47a8155fe7593e271f7227719dc9dc55a60494 --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/execute/20000801-3.c @@ -0,0 +1,24 @@ +/* Origin: PR c/92 from Simon Marlow <t-simonm@microsoft.com>, adapted + to a testcase by Joseph Myers <jsm28@cam.ac.uk>. +*/ + +typedef struct { } empty; + +typedef struct { + int i; + empty e; + int i2; +} st; + +st s = { .i = 0, .i2 = 1 }; + +extern void abort (void); + +int +main (void) +{ + if (s.i2 == 1) + exit (0); + else + abort (); +} diff --git a/gcc/testsuite/gcc.c-torture/execute/20000801-3.x b/gcc/testsuite/gcc.c-torture/execute/20000801-3.x new file mode 100644 index 0000000000000000000000000000000000000000..2f397b96e51b8dd77baecd30d403a01dfab48caf --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/execute/20000801-3.x @@ -0,0 +1,2 @@ +set torture_execute_xfail "*-*-*" +return 0 diff --git a/gcc/testsuite/gcc.c-torture/execute/20000801-4.c b/gcc/testsuite/gcc.c-torture/execute/20000801-4.c new file mode 100644 index 0000000000000000000000000000000000000000..06d2ffbf271f118d8be47e03b6db7668f1600e24 --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/execute/20000801-4.c @@ -0,0 +1,27 @@ +/* Origin: PR c/128 from Martin Sebor <sebor@roguewave.com>, adapted + as a testcase by Joseph Myers <jsm28@cam.ac.uk>. +*/ +/* Character arrays initialised by a string literal must have + uninitialised elements zeroed. This isn't clear in the 1990 + standard, but was fixed in TC2 and C99; see DRs #060, #092. +*/ +extern void abort (void); + +int +foo (void) +{ + char s[2] = ""; + return 0 == s[1]; +} + +int +main (void) +{ + { + char s[] = "x"; + } + if (foo ()) + exit (0); + else + abort (); +} diff --git a/gcc/testsuite/gcc.c-torture/execute/20000801-4.x b/gcc/testsuite/gcc.c-torture/execute/20000801-4.x new file mode 100644 index 0000000000000000000000000000000000000000..2f397b96e51b8dd77baecd30d403a01dfab48caf --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/execute/20000801-4.x @@ -0,0 +1,2 @@ +set torture_execute_xfail "*-*-*" +return 0