OSDN Git Service

PR bootstrap/41405
[pf3gnuchains/gcc-fork.git] / gcc / testsuite / g++.dg / debug / dwarf2 / fesd.h
1 /*
2 where from: base = matching base; head = other header
3 what kind:  ordy = ordinary struct; tmpl = template struct
4 definition: decl = incomplete declaration; defn = full definition
5 how used:   not = not used; ref = by ref; ptr = through pointer;
6             fld = as field; var = as variable
7 from where: base = from base; head = other header
8 */
9
10 struct gstruct_head_ordy_decl_not;
11 struct gstruct_head_ordy_defn_not { int field_head_ordy_defn_not; };
12
13 struct gstruct_head_ordy_decl_ref_head;
14 struct gstruct_head_ordy_defn_ref_head { int field_head_ordy_defn_ref_head; };
15 struct gstruct_head_ordy_defn_ptr_head { int field_head_ordy_defn_ptr_head; };
16 struct gstruct_head_ordy_defn_fld_head { int field_head_ordy_defn_fld_head; };
17 struct gstruct_head_ordy_defn_var_head {
18     gstruct_head_ordy_decl_ref_head *field_head_ordy_defn_var_head_inc;
19     gstruct_head_ordy_defn_ref_head *field_head_ordy_defn_var_head_ref;
20     gstruct_head_ordy_defn_ptr_head *field_head_ordy_defn_var_head_ptr;
21     gstruct_head_ordy_defn_fld_head  field_head_ordy_defn_var_head_fld;
22 };
23 extern struct gstruct_head_ordy_defn_var_head head_var1;
24
25 struct gstruct_head_ordy_decl_ref_base;
26 struct gstruct_head_ordy_defn_ref_base { int field_head_ordy_defn_ref_base; };
27 struct gstruct_head_ordy_defn_ptr_base { int field_head_ordy_defn_ptr_base; };
28 struct gstruct_head_ordy_defn_fld_base { int field_head_ordy_defn_fld_base; };
29 struct gstruct_head_ordy_defn_var_base { int field_head_ordy_defn_var_base; };
30
31 template< typename T > struct gstruct_head_tmpl_decl_not;
32 template< typename T > struct gstruct_head_tmpl_defn_not
33 { T field_head_tmpl_defn_not; };
34
35 template< typename T > struct gstruct_head_tmpl_decl_ref_head;
36 template< typename T > struct gstruct_head_tmpl_defn_ref_head
37 { T field_head_tmpl_defn_ref_head; };
38 template< typename T > struct gstruct_head_tmpl_defn_ptr_head
39 { T field_head_tmpl_defn_ptr_head; };
40 template< typename T > struct gstruct_head_tmpl_defn_fld_head
41 { T field_head_tmpl_defn_fld_head; };
42 template< typename T > struct gstruct_head_tmpl_defn_var_head {
43     gstruct_head_tmpl_decl_ref_head< T > *field_head_tmpl_defn_var_head_inc;
44     gstruct_head_tmpl_defn_ref_head< T > *field_head_tmpl_defn_var_head_ref;
45     gstruct_head_tmpl_defn_ptr_head< T > *field_head_tmpl_defn_var_head_ptr;
46     gstruct_head_tmpl_defn_fld_head< T >  field_head_tmpl_defn_var_head_fld;
47 };
48 extern gstruct_head_tmpl_defn_var_head< int > head_var5;
49
50 template< typename T > struct gstruct_head_tmpl_decl_ref_base;
51 template< typename T > struct gstruct_head_tmpl_defn_ref_base
52 { T field_head_tmpl_defn_ref_base; };
53 template< typename T > struct gstruct_head_tmpl_defn_ptr_base
54 { T field_head_tmpl_defn_ptr_base; };
55 template< typename T > struct gstruct_head_tmpl_defn_fld_base
56 { T field_head_tmpl_defn_fld_base; };
57 template< typename T > struct gstruct_head_tmpl_defn_var_base
58 { T field_head_tmpl_defn_var_base; };
59
60 inline int head_function() {
61     return 0
62 + head_var1.field_head_ordy_defn_var_head_ptr->field_head_ordy_defn_ptr_head
63 + head_var1.field_head_ordy_defn_var_head_fld.field_head_ordy_defn_fld_head
64 + head_var5.field_head_tmpl_defn_var_head_ptr->field_head_tmpl_defn_ptr_head
65 + head_var5.field_head_tmpl_defn_var_head_fld.field_head_tmpl_defn_fld_head
66 ;
67 }