diff --git a/gcc/testsuite/g++.dg/special/conpr-2.C b/gcc/testsuite/g++.dg/special/conpr-2.C index 2deeb011d6b..9c482b95fb6 100644 --- a/gcc/testsuite/g++.dg/special/conpr-2.C +++ b/gcc/testsuite/g++.dg/special/conpr-2.C @@ -1,5 +1,6 @@ /* This doesn't work on solaris2 for reasons described in PR 6482. */ /* { dg-do run { xfail *-*-solaris2* } } */ +/* { dg-gpp-additional-sources "conpr-2a.cc" } */ #include diff --git a/gcc/testsuite/g++.dg/special/conpr-2a.C b/gcc/testsuite/g++.dg/special/conpr-2a.cc similarity index 100% rename from gcc/testsuite/g++.dg/special/conpr-2a.C rename to gcc/testsuite/g++.dg/special/conpr-2a.cc diff --git a/gcc/testsuite/g++.dg/special/conpr-3.C b/gcc/testsuite/g++.dg/special/conpr-3.C index c5fc235e779..3fe5741f546 100644 --- a/gcc/testsuite/g++.dg/special/conpr-3.C +++ b/gcc/testsuite/g++.dg/special/conpr-3.C @@ -1,4 +1,5 @@ /* { dg-do run } */ +/* { dg-gpp-additional-sources "conpr-3a.cc conpr-3b.cc" } */ #include diff --git a/gcc/testsuite/g++.dg/special/conpr-3a.C b/gcc/testsuite/g++.dg/special/conpr-3a.cc similarity index 100% rename from gcc/testsuite/g++.dg/special/conpr-3a.C rename to gcc/testsuite/g++.dg/special/conpr-3a.cc diff --git a/gcc/testsuite/g++.dg/special/conpr-3b.C b/gcc/testsuite/g++.dg/special/conpr-3b.cc similarity index 100% rename from gcc/testsuite/g++.dg/special/conpr-3b.C rename to gcc/testsuite/g++.dg/special/conpr-3b.cc diff --git a/gcc/testsuite/g++.dg/special/conpr-4.C b/gcc/testsuite/g++.dg/special/conpr-4.C new file mode 100644 index 00000000000..68ac543ad1c --- /dev/null +++ b/gcc/testsuite/g++.dg/special/conpr-4.C @@ -0,0 +1,23 @@ +/* { dg-do run } */ +/* { dg-gpp-additional-sources "conpr-3b.cc conpr-3a.cc" } */ + +#include + +class foo_t { + int x; + static int count; +public: + foo_t(void) { x=++count; } + int get(void) { return x; } +}; + +int foo_t::count; + +extern foo_t foo1, foo2; + +int main(void) { + + if ( (foo1.get() != 2) || (foo2.get() != 1) ) + abort(); + exit(0); +} diff --git a/gcc/testsuite/g++.dg/special/ecos.exp b/gcc/testsuite/g++.dg/special/ecos.exp index 0a9eff9ff8b..dc34ff83da4 100644 --- a/gcc/testsuite/g++.dg/special/ecos.exp +++ b/gcc/testsuite/g++.dg/special/ecos.exp @@ -1,4 +1,4 @@ -# Copyright (C) 1999, 2001 Free Software Foundation, Inc. +# Copyright (C) 1999, 2001, 2003 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -24,85 +24,21 @@ # Load support procs. load_lib g++-dg.exp -########### -# conpr-1.C -########### +# Test for whether or not __attribute__((init_priority)) is supported +# by the platform. -dg-init -set lines [g++_target_compile "$srcdir/$subdir/conpr-1.C" "$objdir/conpr-1.exe" executable ""] -if [string match "*init_priority*" $lines] then { - xfail "conpr-1.C" - file delete $objdir/conpr-1.exe -} elseif ![string match "" $lines] then { - fail "conpr-1.C" -} else { - dg-runtest "$srcdir/$subdir/conpr-1.C" "" "" - file delete $objdir/conpr-1.exe +set comp_output [g++_target_compile \ + "$srcdir/$subdir/initp1.C" "initp1.S" assembly ""] +if { [string match "*init_priority*" $comp_output] } { + return 0 } -dg-finish - - -########### -# conpr-2.C -########### +# Initialize 'dg'. dg-init -set lines [g++_target_compile "$srcdir/$subdir/conpr-2a.C" "conpr-2a.o" object ""] -if [string match "*init_priority*" $lines] then { - xfail "conpr-2a.o" -} elseif ![string match "" $lines] then { - fail "conpr-2a.o" -} else { - dg-runtest "$srcdir/$subdir/conpr-2.C" "conpr-2a.o" "" - file delete conpr-2a.o -} +# Main loop. +dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.C]] "" "" + +# All done. dg-finish - -########### -# conpr-3.C -########### - -dg-init - -set lines [g++_target_compile "$srcdir/$subdir/conpr-3a.C" "conpr-3a.o" object ""] -if [string match "*init_priority*" $lines] then { - xfail "conpr-3a.o" -} elseif ![string match "" $lines] then { - fail "conpr-3a.o" -} else { - set lines [g++_target_compile "$srcdir/$subdir/conpr-3b.C" "conpr-3b.o" object ""] - if ![string match "" $lines] then { - fail "conpr-3b.o" - } else { - # run it with objects both ways around! - # This doesn't work on solaris2 for reasons described in PR 6482. - if { ![regexp ".*-solaris2.*" $target_triplet] } { - dg-runtest "$srcdir/$subdir/conpr-3.C" "conpr-3a.o conpr-3b.o" "" - dg-runtest "$srcdir/$subdir/conpr-3.C" "conpr-3b.o conpr-3a.o" "" - } - file delete conpr-3a.o conpr-3b.o - } -} -dg-finish - -########### -# initp1.C -########### - -dg-init -set lines [g++_target_compile "$srcdir/$subdir/initp1.C" "$objdir/initp1.exe" executable ""] -if [string match "*init_priority*" $lines] then { - xfail "initp1.C" - file delete $objdir/initp1.exe -} elseif ![string match "" $lines] then { - fail "initp1.C" -} else { - dg-runtest "$srcdir/$subdir/initp1.C" "" "" - file delete $objdir/initp1.exe -} -dg-finish - - -### EOF ecos.exp diff --git a/gcc/testsuite/lib/g++.exp b/gcc/testsuite/lib/g++.exp index 63808f87c77..68b4d16023e 100644 --- a/gcc/testsuite/lib/g++.exp +++ b/gcc/testsuite/lib/g++.exp @@ -313,7 +313,7 @@ proc g++_target_compile { source dest type options } { if [is_remote host] { lappend options "additional_flags=$additional_sources" } - regsub -all " " $additional_sources " [file dirname $source]/" additional_sources + regsub -all "^| " $additional_sources " [file dirname $source]/" additional_sources if ![is_remote host] { lappend options "additional_flags=$additional_sources" }