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]; +}