[C++ PATCH] Deprecate -ffriend-injection
[official-gcc.git] / gcc / testsuite / g++.dg / tree-ssa / ssa-dom.C
blob6fefdff0c795e3f96d361bde92c78bd1d88b036a
1 /* { dg-do compile } */
2 /* { dg-options "-O2 -fdump-tree-dom2" } */
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;
12 enum gimple_code
14   GIMPLE_RETURN = 10,
21 struct gimple_statement_base
25   enum gimple_code code:8;
29 enum gimple_statement_structure_enum
31   xyz
39 union gimple_statement_d
41   struct gimple_statement_base gsbase;
48 extern size_t const gimple_ops_offset_[];
51 extern enum gimple_statement_structure_enum const gss_for_code_[];
54 static inline enum gimple_code
55 gimple_code (const_gimple g)
57   return g->gsbase.code;
63 static inline enum gimple_statement_structure_enum
64 gss_for_code (enum gimple_code code)
66   return gss_for_code_[code];
72 static inline enum gimple_statement_structure_enum
73 gimple_statement_structure (gimple gs)
75   return gss_for_code (gimple_code (gs));
79 static inline tree *
80 gimple_ops (gimple gs)
82   size_t off;
83   off = gimple_ops_offset_[gimple_statement_structure (gs)];
84   return (tree *) ((char *) gs + off);
88 static inline void
89 gimple_set_op (gimple gs, unsigned i, tree op)
91   gimple_ops (gs)[i] = op;
94 void
95 gimple_return_set_retval (gimple gs, tree retval)
97   const_gimple __gs = (gs);
98   if (gimple_code (__gs) != (GIMPLE_RETURN))
99     abort ();
100   gimple_set_op (gs, 0, retval);
102 /* { dg-final { scan-tree-dump-times "gss_for_code_.10." 1 "dom2"} } */