diff --git a/gcc/objc/ChangeLog b/gcc/objc/ChangeLog
index 35fed822796cf8663612d70466b8f1bc9bebbee8..472d4aa7ac63dec1bb6322b0a1b0a67db1e0c461 100644
--- a/gcc/objc/ChangeLog
+++ b/gcc/objc/ChangeLog
@@ -1,3 +1,9 @@
+2010-04-07  Iain Sandoe <iains@gcc.gnu.org>
+
+	PR objc++/23716
+	* objc-act.c (build_module_initializer_routine): Make the argument
+	to objc_start_function NULL_TREE when compiling ObjC++.
+
 2010-02-18  Iain Sandoe <iain.sandoe@sandoe-acoustics.co.uk>
 	    Mike Stump  <mikestump@comcast.net>
 
diff --git a/gcc/objc/objc-act.c b/gcc/objc/objc-act.c
index 10cc9bce3067a51357e409a0695ff99cd1f6208b..7e3a2d86115f34109b2c5f0300875e2964af927f 100644
--- a/gcc/objc/objc-act.c
+++ b/gcc/objc/objc-act.c
@@ -2391,11 +2391,17 @@ build_module_initializer_routine (void)
 
   objc_push_parm (build_decl (input_location,
 			      PARM_DECL, NULL_TREE, void_type_node));
+#ifdef OBJCPLUS
+  objc_start_function (get_identifier (TAG_GNUINIT),
+		       build_function_type (void_type_node,
+					    OBJC_VOID_AT_END),
+		       NULL_TREE, NULL_TREE);
+#else
   objc_start_function (get_identifier (TAG_GNUINIT),
 		       build_function_type (void_type_node,
 					    OBJC_VOID_AT_END),
 		       NULL_TREE, objc_get_parm_info (0));
-
+#endif
   body = c_begin_compound_stmt (true);
   add_stmt (build_function_call
 	    (input_location,
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 32c64b329e319b31ad9c30bf31cf6745725e1837..a074ef23d7cb393472e4a04cfe9e471214e5e4df 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2010-04-07  Iain Sandoe <iains@gcc.gnu.org>
+
+	PR objc++/23716
+	* obj-c++.dg/comp-types-10.mm: Remove XFAIL.
+
 2010-04-07  Jason Merrill  <jason@redhat.com>
 
 	* g++.dg/template/dr408.C: New.
diff --git a/gcc/testsuite/obj-c++.dg/comp-types-10.mm b/gcc/testsuite/obj-c++.dg/comp-types-10.mm
index b4da5ddd6430bb0aa075a0d8d453beada06e22e0..c7f0cb635c719d87d165aa0f5098cd94ac7dca65 100644
--- a/gcc/testsuite/obj-c++.dg/comp-types-10.mm
+++ b/gcc/testsuite/obj-c++.dg/comp-types-10.mm
@@ -1,6 +1,5 @@
 /* Yet another mysterious gimplifier crasher.  */
 /* { dg-do compile } */
-/* { dg-xfail-if "PR23716" { ! *-*-darwin* } { "*" } { "" } } */
 /* { dg-prune-output ".*internal compiler error.*" } */
 /* { dg-options "-O3" } */