From 62a22729d652fba809624adc2804cdbc7fe6e5d7 Mon Sep 17 00:00:00 2001
From: pinskia <pinskia@138bc75d-0d04-0410-961f-82ee72b054a4>
Date: Sat, 13 Aug 2005 21:16:04 +0000
Subject: [PATCH] 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.


git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@103061 138bc75d-0d04-0410-961f-82ee72b054a4
---
 gcc/testsuite/ChangeLog              |  7 +++++
 gcc/testsuite/lib/objc-torture.exp   | 47 +++++++++++++++++++++-------
 gcc/testsuite/objc/compile/trivial.m |  6 ++++
 3 files changed, 48 insertions(+), 12 deletions(-)
 create mode 100644 gcc/testsuite/objc/compile/trivial.m

diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index c54ba51d97cd..f98e13712243 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 4f7826a513dd..09d0c7761ff1 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 000000000000..c2560658ea41
--- /dev/null
+++ b/gcc/testsuite/objc/compile/trivial.m
@@ -0,0 +1,6 @@
+#import <objc/Object.h>
+
+int main(void)
+{
+  [Object class];
+}
-- 
GitLab