diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index ed3676813b4f..b5cbdf5c02f9 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,14 @@
+2011-01-08  Dominique d'Humieres  <dominiq@lps.ens.fr>
+	    Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+
+	PR objc/45989
+	* objc.dg/gnu-encoding/struct-layout-encoding-1_generate.c
+	(switchfiles): XFAIL
+	objc.dg-struct-layout-encoding-1/t02[57-9]_main.m execution tests
+	on i?86-*-*, x86_64-*-*, and powerpc*-apple-darwin* && ilp32.
+	XFAIL objc.dg-struct-layout-encoding-1/t03[01]_main.m execution
+	tests on i?86-*-* and x86_64-*-*.
+
 2011-01-14  Richard Guenther  <rguenther@suse.de>
 
 	PR tree-optimization/47280
diff --git a/gcc/testsuite/objc.dg/gnu-encoding/struct-layout-encoding-1_generate.c b/gcc/testsuite/objc.dg/gnu-encoding/struct-layout-encoding-1_generate.c
index 3bb7d6529329..7494131c16ab 100644
--- a/gcc/testsuite/objc.dg/gnu-encoding/struct-layout-encoding-1_generate.c
+++ b/gcc/testsuite/objc.dg/gnu-encoding/struct-layout-encoding-1_generate.c
@@ -1,5 +1,5 @@
 /* Structure layout test generator.
-   Copyright (C) 2004, 2005, 2007, 2010 Free Software Foundation, Inc.
+   Copyright (C) 2004, 2005, 2007, 2010, 2011 Free Software Foundation, Inc.
    Contributed by Jakub Jelinek <jakub@redhat.com>.
 
 This file is part of GCC.
@@ -236,17 +236,23 @@ switchfiles (int fields)
       || filecnt == 22)
      {
       fprintf (outfile, "\
-/* { dg-do run { xfail { \"powerpc*-*-aix*\" } } } */\n\
+/* { dg-do run { xfail { powerpc*-*-aix* } } } */\n\
 /* { dg-options \"-w -I%s -fgnu-runtime\" } */\n", srcdir);
      }
   /* FIXME: these should not be xfailed but they are because
      of bugs in libobjc and the objc front-end.  25 is because
      vectors are not encoded.  The rest are because or zero sized
-     arrays are encoded as pointers.  */
-  else if (filecnt >= 25)
+     arrays are encoded as pointers.  See PR objc/25361.  */
+  else if (filecnt == 25 || (filecnt >= 27 && filecnt <= 29))
     {
       fprintf (outfile, "\
-/* { dg-do run { xfail *-*-* } } */\n\
+/* { dg-do run { xfail { { i?86-*-* x86_64-*-* } || { powerpc*-apple-darwin* && ilp32 } } } } */\n\
+/* { dg-options \"-w -I%s -fgnu-runtime\" } */\n", srcdir);
+    }
+  else if (filecnt >= 30)
+    {
+      fprintf (outfile, "\
+/* { dg-do run { xfail { i?86-*-* x86_64-*-* } } } */\n\
 /* { dg-options \"-w -I%s -fgnu-runtime\" } */\n", srcdir);
     }
   else