1 // { dg-do run } 2 // GROUPS passed ARM-compliance 3 // arm file 4 // From: Johan Bengtsson <jbn@lulea.trab.se> 5 // Date: Thu, 21 Oct 93 16:10:25 +0100 6 // Subject: gcc 2.4.5 initializes base classes in mem-initializer order 7 // Message-ID: <9310211510.AA14943@holden.lulea.trab.se> 8 9 #include <stdio.h> 10 #include <stdlib.h> 11 12 int state = 0; 13 14 class A { public: A()15 A() { 16 if (state == 0) 17 state = 1; 18 else { 19 printf ("FAIL\n"); 20 exit (1); 21 } 22 } 23 }; 24 25 class B { public: B()26 B() { 27 if (state == 1) 28 state = 2; 29 else { 30 printf ("FAIL\n"); 31 exit (1); 32 } 33 } 34 }; 35 36 class AB : public A, public B { public: AB()37 AB() : B(), A() { 38 if (state == 2) 39 state = 3; 40 else { 41 printf ("FAIL\n"); 42 exit (1); 43 } 44 } 45 }; 46 main()47int main() 48 { 49 AB ab; 50 if (state == 3) 51 printf("PASS\n"); 52 else 53 printf("FAIL\n"); 54 exit (state != 3); 55 } 56