diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 954772f6c896e78f4e002d75b718216fd32b5bfa..aa0ed47e6352a24b1f35d3ed0c2f253db3bf79fc 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,10 @@ +2006-01-24 Hans-Peter Nilsson <hp@axis.com> + + PR testsuite/25891 + * lib/target-supports.exp (check_effective_target_fopenmp): New proc. + * gcc.dg/gomp/gomp.exp: Return without testing anything if + check_effective_target_fopenmp returns 0. + 2006-01-23 Eric Botcazou <ebotcazou@adacore.com> PR ada/20548 diff --git a/gcc/testsuite/gcc.dg/gomp/gomp.exp b/gcc/testsuite/gcc.dg/gomp/gomp.exp index cb1b338468964d4ba439d3741a7858298d6911e4..7ce426deb79cf1aa155b8462e1a8305cbbf503fc 100644 --- a/gcc/testsuite/gcc.dg/gomp/gomp.exp +++ b/gcc/testsuite/gcc.dg/gomp/gomp.exp @@ -3,6 +3,10 @@ # Load support procs. load_lib gcc-dg.exp +if ![check_effective_target_fopenmp] { + return +} + # Initialize `dg'. dg-init diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp index 05a180eb9cccdee557ff4d7d88fd3fcf90a8d932..851218fb0184eee9da02de251410aef8eb5d23f2 100644 --- a/gcc/testsuite/lib/target-supports.exp +++ b/gcc/testsuite/lib/target-supports.exp @@ -468,6 +468,41 @@ proc check_effective_target_tls_runtime {} { return $et_tls_runtime_saved } +# Return 1 if compilation with -fopenmp is error-free for trivial +# code, 0 otherwise. + +proc check_effective_target_fopenmp {} { + global et_fopenmp_saved + global et_fopenmp_target_name + + if { ![info exists et_fopenmp_target_name] } { + set et_fopenmp_target_name "" + } + + # If the target has changed since we set the cached value, clear it. + set current_target [current_target_name] + if { $current_target != $et_fopenmp_target_name } { + verbose "check_effective_target_fopenmp: `$et_fopenmp_target_name'" 2 + set et_fopenmp_target_name $current_target + if [info exists et_fopenmp_saved] { + verbose "check_effective_target_fopenmp: removing cached result" 2 + unset et_fopenmp_saved + } + } + + if [info exists et_fopenmp_saved] { + verbose "check_effective_target_fopenmp: using cached result" 2 + } else { + verbose "check_effective_target_fopenmp: compiling source" 2 + + set et_fopenmp_saved [string match "" [get_compiler_messages fopenmp object { + void foo (void) { } + } "-fopenmp"]] + } + verbose "check_effective_target_fopenmp: returning $et_fopenmp_saved" 2 + return $et_fopenmp_saved +} + # Return 1 if -fpic and -fPIC are supported, as in no warnings or errors # emitted, 0 otherwise. Whether a shared library can actually be built is # out of scope for this test.