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