1 /* { dg-do compile } */
2 /* { dg-options "-O2 -fdump-tree-dom2" } */
3 
4 typedef __SIZE_TYPE__ size_t;
5 extern void abort (void) __attribute__ ((__noreturn__));
6 union tree_node;
7 typedef union tree_node *tree;
8 union gimple_statement_d;
9 typedef union gimple_statement_d *gimple;
10 typedef const union gimple_statement_d *const_gimple;
11 
12 enum gimple_code
13 {
14   GIMPLE_RETURN = 10,
15 };
16 
17 
18 
19 
20 
21 struct gimple_statement_base
22 {
23 
24 
25   enum gimple_code code:8;
26 };
27 
28 
29 enum gimple_statement_structure_enum
30 {
31   xyz
32 };
33 
34 
35 
36 
37 
38 
39 union gimple_statement_d
40 {
41   struct gimple_statement_base gsbase;
42 };
43 
44 
45 
46 
47 
48 extern size_t const gimple_ops_offset_[];
49 
50 
51 extern enum gimple_statement_structure_enum const gss_for_code_[];
52 
53 
54 static inline enum gimple_code
gimple_code(const_gimple g)55 gimple_code (const_gimple g)
56 {
57   return g->gsbase.code;
58 }
59 
60 
61 
62 
63 static inline enum gimple_statement_structure_enum
gss_for_code(enum gimple_code code)64 gss_for_code (enum gimple_code code)
65 {
66   return gss_for_code_[code];
67 }
68 
69 
70 
71 
72 static inline enum gimple_statement_structure_enum
gimple_statement_structure(gimple gs)73 gimple_statement_structure (gimple gs)
74 {
75   return gss_for_code (gimple_code (gs));
76 }
77 
78 
79 static inline tree *
gimple_ops(gimple gs)80 gimple_ops (gimple gs)
81 {
82   size_t off;
83   off = gimple_ops_offset_[gimple_statement_structure (gs)];
84   return (tree *) ((char *) gs + off);
85 }
86 
87 
88 static inline void
gimple_set_op(gimple gs,unsigned i,tree op)89 gimple_set_op (gimple gs, unsigned i, tree op)
90 {
91   gimple_ops (gs)[i] = op;
92 }
93 
94 void
gimple_return_set_retval(gimple gs,tree retval)95 gimple_return_set_retval (gimple gs, tree retval)
96 {
97   const_gimple __gs = (gs);
98   if (gimple_code (__gs) != (GIMPLE_RETURN))
99     abort ();
100   gimple_set_op (gs, 0, retval);
101 }
102 /* { dg-final { scan-tree-dump-times "gss_for_code_.10." 1 "dom2"} } */
103 
104