testsuite: Factor out a function to run a matrix of tests This commons up code from libffi.call/call.exp and libffi.special/special.exp, unifies the optimization option matrix between the two, and makes it easier to add more axes to the matrix in the future.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77
diff --git a/testsuite/lib/libffi.exp b/testsuite/lib/libffi.exp
index 1ac2c36..014e520 100644
--- a/testsuite/lib/libffi.exp
+++ b/testsuite/lib/libffi.exp
@@ -273,6 +273,23 @@ proc libffi-dg-runtest { testcases default-extra-flags } {
}
}
+proc run-many-tests { testcases extra_flags } {
+ global using_gcc
+ if { [string match $using_gcc "yes"] } {
+ set common "-W -Wall"
+ set optimizations { "-O0" "-O2" "-O3" "-Os" "-O2 -fomit-frame-pointer" }
+ } else {
+ # Assume we are using the vendor compiler.
+ set common ""
+ set optimizations { "" }
+ }
+
+ set common [ concat $common $extra_flags ]
+ foreach opt $optimizations {
+ set options [ concat $common $opt ]
+ dg-runtest $testcases $options ""
+ }
+}
# Like check_conditional_xfail, but callable from a dg test.
diff --git a/testsuite/libffi.call/call.exp b/testsuite/libffi.call/call.exp
index c334685..c1ad737 100644
--- a/testsuite/libffi.call/call.exp
+++ b/testsuite/libffi.call/call.exp
@@ -19,20 +19,7 @@ libffi-init
global srcdir subdir
-if { [string match $using_gcc "yes"] } {
-
- dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.\[cS\]]] "-O0 -W -Wall" ""
- dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.\[cS\]]] "-O2" ""
- dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.\[cS\]]] "-O3" ""
- dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.\[cS\]]] "-Os" ""
- dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.\[cS\]]] "-O2 -fomit-frame-pointer" ""
-
-} else {
-
- # Assume we are using the vendor compiler.
- dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.\[cS\]]] "" ""
-
-}
+run-many-tests [lsort [glob -nocomplain $srcdir/$subdir/*.\[cS\]]] ""
dg-finish
diff --git a/testsuite/libffi.special/special.exp b/testsuite/libffi.special/special.exp
index f1a5fa6..f7155bf 100644
--- a/testsuite/libffi.special/special.exp
+++ b/testsuite/libffi.special/special.exp
@@ -19,17 +19,8 @@ libffi-init
global srcdir subdir
-global cxx_options
-
-set cxx_options " -shared-libgcc -lstdc++"
-
if { [string match $using_gcc "yes"] } {
-
- dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.cc]] $cxx_options "-O0 -W -Wall"
- dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.cc]] $cxx_options "-O2"
- dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.cc]] $cxx_options "-O3"
- dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.cc]] $cxx_options "-Os"
-
+ run-many-tests [lsort [glob -nocomplain $srcdir/$subdir/*.cc]] "-shared-libgcc -lstdc++"
}
dg-finish