summaryrefslogtreecommitdiff
path: root/gcc/testsuite/g++.old-deja/g++.brendan/code-gen1.C
blob: a8c9aba3645134cbd799b2b6cee60fd18cdbbf2a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
// { dg-do run  }
// GROUPS passed code-generation
// Check that sub-word sized structs/classes are passed correctly
// if the struct/class has a constructor (i.e. ANY constructor).

extern "C" int printf (const char *, ...); 

struct base {
	unsigned int f1 : 8;
	unsigned int f2 : 8;

	base (int ii)
	{
	}
};

base global_base (7);

int test2 (base formal_base);

int main ()
{
	global_base.f1 = 0x55;
	global_base.f2 = 0xee;

	if (test2 (global_base) == 0)
	  printf ("PASS\n");
	else
	  { printf ("FAIL\n"); return 1; }

	return 0;
}

int test2 (base formal_base)
{
	if (formal_base.f1 != global_base.f1)
		return -1;
	if (formal_base.f2 != global_base.f2)
		return -1;
	return 0;
}