diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index c54ba51d97cd5b563963020bc82d0725cb815eb6..f98e13712243cd960a18700def5aa07740457b77 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,10 @@
+2005-08-13  Andrew Pinski  <pinskia@physics.uc.edu>
+
+	part of PR testsuite/23348
+	* lib/objc-torture.exp: Add -fgnu-runtime and/or -fnext-runtime to each
+	of the torture options.
+	* objc/compile/trivial.m: New test.
+
 2005-08-12  Thomas Koenig  <Thomas.Koenig@online.de>
 
 	* gfortran.dg/eoshift.f90:  Correct format.
diff --git a/gcc/testsuite/lib/objc-torture.exp b/gcc/testsuite/lib/objc-torture.exp
index 4f7826a513dd3f245229cea52fe5ad69ac766641..09d0c7761ff1d13a583ec03a6988ffdafb136b75 100644
--- a/gcc/testsuite/lib/objc-torture.exp
+++ b/gcc/testsuite/lib/objc-torture.exp
@@ -21,6 +21,24 @@ load_lib file-format.exp
 # The default option list can be overridden by
 # TORTURE_OPTIONS="{ { list1 } ... { listN } }"
 
+if ![info exists OBJC_RUNTIME_OPTIONS] {
+  set OBJC_RUNTIME_OPTIONS ""
+  foreach type {-fgnu-runtime -fnext-runtime} {
+    global srcdir subdir
+
+    set comp_output [objc_target_compile \
+    "$srcdir/$subdir/trivial.m" "trivial.exe" executable "additional_flags=$type"]
+
+    # If we get any error, then we failed
+    if ![string match "" $comp_output] then {
+      continue;
+    }
+    lappend OBJC_RUNTIME_OPTIONS $type
+  }
+}
+verbose -log "Using the following runtimes: $OBJC_RUNTIME_OPTIONS"
+
+
 if ![info exists TORTURE_OPTIONS] {
     # It is theoretically beneficial to group all of the O2/O3 options together,
     # as in many cases the compiler will generate identical executables for
@@ -30,28 +48,33 @@ if ![info exists TORTURE_OPTIONS] {
     # items below, even though -O3 is also specified, because some ports may
     # choose to disable inlining functions by default, even when optimizing.
     set TORTURE_OPTIONS [list \
-	{ -O0 } \
-	{ -O1 } \
-	{ -O2 } \
-	{ -O3 -fomit-frame-pointer } \
-	{ -O3 -fomit-frame-pointer -funroll-loops } \
-	{ -O3 -fomit-frame-pointer -funroll-all-loops -finline-functions } \
-	{ -O3 -g } \
-	{ -Os } ]
+	" -O0 " \
+	" -O1 " \
+	" -O2 " \
+	" -O3 -fomit-frame-pointer " \
+	" -O3 -fomit-frame-pointer -funroll-loops " \
+	" -O3 -fomit-frame-pointer -funroll-all-loops -finline-functions " \
+	" -O3 -g " \
+	" -Os " ]
 }
 
 
 # Split TORTURE_OPTIONS into two choices: one for testcases with loops and
-# one for testcases without loops.
+# one for testcases without loops. Add in the objc runtime options also.
 
-set torture_with_loops $TORTURE_OPTIONS
+set torture_with_loops ""
 set torture_without_loops ""
-foreach option $TORTURE_OPTIONS {
+foreach objc_option $OBJC_RUNTIME_OPTIONS {
+  foreach option $TORTURE_OPTIONS {
+  
     if ![string match "*loop*" $option] {
-	lappend torture_without_loops $option
+	lappend torture_without_loops "$option $objc_option"
     }
+    lappend torture_with_loops "$option $objc_option"
+  }
 }
 
+
 #
 # objc-torture-compile -- runs the Tege OBJC-torture test
 #
diff --git a/gcc/testsuite/objc/compile/trivial.m b/gcc/testsuite/objc/compile/trivial.m
new file mode 100644
index 0000000000000000000000000000000000000000..c2560658ea416f7028ab59544c742d372be07c1f
--- /dev/null
+++ b/gcc/testsuite/objc/compile/trivial.m
@@ -0,0 +1,6 @@
+#import <objc/Object.h>
+
+int main(void)
+{
+  [Object class];
+}