// { dg-do run  }
// GROUPS passed ARM-compliance
// arm file
// From: Johan Bengtsson <jbn@lulea.trab.se>
// Date:     Thu, 21 Oct 93 16:10:25 +0100
// Subject:  gcc 2.4.5 initializes base classes in mem-initializer order
// Message-ID: <9310211510.AA14943@holden.lulea.trab.se>

#include <stdio.h>
#include <stdlib.h>

int state = 0;

class A { public:
        A() { 
		if (state == 0)
			state = 1;
		else {
			printf ("FAIL\n");
			exit (1);
		}
	}
};

class B { public:
        B() {
		if (state == 1)
			state = 2;
		else {
			printf ("FAIL\n");
			exit (1);
		}
	}
};

class AB : public A, public B { public:
        AB() : B(), A() { 
		if (state == 2)
			state = 3;
		else {
			printf ("FAIL\n");
			exit (1);
		}
	}
};

int main()
{
        AB ab;
	if (state == 3)
		printf("PASS\n");
	else
		printf("FAIL\n");
	exit (state != 3);
}
