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)55gimple_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)64gss_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)73gimple_statement_structure (gimple gs) 74 { 75 return gss_for_code (gimple_code (gs)); 76 } 77 78 79 static inline tree * gimple_ops(gimple gs)80gimple_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)89gimple_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)95gimple_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