This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Move g++ test
- To: gcc-patches at gcc dot gnu dot org
- Subject: Move g++ test
- From: Jeffrey A Law <law at cygnus dot com>
- Date: Thu, 26 Apr 2001 13:08:32 -0700
g++.old-deja/g++.ext/initp1.C really belongs in g++.dg/special where
the framework will detect whether or not constructor priorities are
supported and automatically xfail the test if they do not.
I've tested and verified the right thing happens for this test on a
system without constructor priorities (hpux) and with constructor
priorities (ia32-linux).
Installed on the branch and mainline sources.
* g++.dg/special/initp1.C: Moved here from g++.old-deja/g++.ext.
Tweak slightly to work with g++.dg framework.
* g++.dg/special/ecos.exp: Run initp1.C test.
* g++.old-deja/g++.ext/initp1.C: Moved to g++.dg/special.
Index: g++.dg/special/ecos.exp
===================================================================
RCS file: /cvs/gcc/egcs/gcc/testsuite/g++.dg/special/ecos.exp,v
retrieving revision 1.5
diff -c -3 -p -r1.5 ecos.exp
*** ecos.exp 2001/03/28 21:10:51 1.5
--- ecos.exp 2001/04/26 20:03:51
*************** if [string match "*init_priority*" $line
*** 84,88 ****
--- 84,105 ----
}
dg-finish
+ ###########
+ # initp1.C
+ ###########
+
+ dg-init
+ set lines [g++_target_compile "$srcdir/$subdir/initp1.C" "$objdir/a.out"
executable ""]
+ if [string match "*init_priority*" $lines] then {
+ xfail "initp1.C"
+ file delete $objdir/a.out
+ } elseif ![string match "" $lines] then {
+ fail "initp1.C"
+ } else {
+ dg-runtest "$srcdir/$subdir/conpr-1.C" "" ""
+ file delete $objdir/a.out
+ }
+ dg-finish
+
### EOF ecos.exp
*** /dev/null Thu Apr 26 13:50:20 2001
--- g++.dg/special/initp1.C Thu Apr 26 13:52:31 2001
***************
*** 0 ****
--- 1,90 ----
+ /* { dg-do run } */
+ #include <stdlib.h>
+
+ class Two {
+ private:
+ int i, j, k;
+ public:
+ static int count;
+ Two( int ii, int jj ) { i = ii; j = jj; k = count++; };
+ Two( void ) { i = 0; j = 0; k = count++; };
+ int eye( void ) { return i; };
+ int jay( void ) { return j; };
+ int kay( void ) { return k; };
+ };
+
+ extern Two foo;
+ extern Two goo;
+ extern Two coo[];
+ extern Two koo[];
+
+ Two foo( 5, 6 ) __attribute__((init_priority(1005)));
+
+ Two goo __attribute__((init_priority(1007))) = Two( 7, 8 );
+
+ Two doo[ 3 ];
+
+ Two hoo[ 3 ] = {
+ Two( 11, 12 ),
+ Two( 13, 14 ),
+ Two( 15, 16 )
+ };
+
+ Two coo[ 3 ] __attribute__((init_priority(1000)));
+
+ Two koo[ 3 ] __attribute__((init_priority(1000))) = {
+ Two( 21, 22 ),
+ Two( 23, 24 ),
+ Two( 25, 26 )
+ };
+
+ Two xoo[ 3 ] __attribute__((init_priority(1100)));
+
+ Two zoo[ 3 ] __attribute__((init_priority(1100))) = {
+ Two( 31, 32 ),
+ Two( 33, 34 ),
+ Two( 35, 36 )
+ };
+
+ int Two::count;
+
+ int x = 0;
+
+ #define X( n ) \
+ do { if ( x & (1 << (n)) ) return 1; else x |= (1 << (n)); } while (0)
+
+ int main()
+ {
+
+ X( coo[0].kay() );
+ X( coo[1].kay() );
+ X( coo[2].kay() );
+ X( koo[0].kay() );
+ X( koo[1].kay() );
+ X( koo[2].kay() );
+ if ( 0x3f != x ) abort ();
+
+ X( foo.kay() );
+ if ( 0x7f != x ) abort ();
+
+ X( goo.kay() );
+ if ( 0xff != x ) abort ();
+
+ X( xoo[0].kay() );
+ X( xoo[1].kay() );
+ X( xoo[2].kay() );
+ X( zoo[0].kay() );
+ X( zoo[1].kay() );
+ X( zoo[2].kay() );
+ if ( 0x3fff != x ) abort ();
+
+ X( doo[0].kay() );
+ X( doo[1].kay() );
+ X( doo[2].kay() );
+ X( hoo[0].kay() );
+ X( hoo[1].kay() );
+ X( hoo[2].kay() );
+ if ( 0xfffff != x ) abort ();
+
+ exit (0);
+ }