; start of dump from pass_cd_dce (../../src/gcc/tree-ssa-dce.c:1754) ;; Function ravif2 (ravif2, funcdef_no=0, decl_uid=364, cgraph_uid=0, symbol_order=0) ;; 1 loops found ;; ;; Loop 0 ;; header 0, latch 1 ;; depth 0, outer -1 ;; nodes: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ;; 2 succs { 8 3 } ;; 3 succs { 4 5 } ;; 4 succs { 6 5 } ;; 5 succs { 6 } ;; 6 succs { 8 7 } ;; 7 succs { 8 } ;; 8 succs { 13 9 } ;; 9 succs { 11 10 } ;; 10 succs { 11 } ;; 11 succs { 13 12 } ;; 12 succs { 13 } ;; 13 succs { 14 15 } ;; 14 succs { 15 } ;; 15 succs { 1 } Marking useful stmt: entry: Marking useful stmt: raviV_op_loadnil (_11, 0, 0); Marking useful stmt: MEM[(struct ravi_TValue *)base_19 + 16B].value_.i = _26; Marking useful stmt: MEM[(struct ravi_TValue *)base_19 + 16B].tt_ = 1; Marking useful stmt: MEM[(struct ravi_TValue *)base_19 + 16B].value_.i = _100; Marking useful stmt: MEM[(struct ravi_TValue *)base_19 + 16B].tt_ = 1; Marking useful stmt: printf ("OP_RETURN(pc=%d) return %d args", 13, 1); Marking useful stmt: L_10(D)->top = _141; Marking useful stmt: OP_RETURN_if_sizep_gt_0_12_23: Marking useful stmt: luaF_close (L_10(D), base_139); Marking useful stmt: OP_RETURN_else_sizep_gt_0_12_24: Marking useful stmt: luaD_poscall (L_10(D), _148); Marking useful stmt: return 1; Processing worklist: processing: return 1; processing: luaD_poscall (L_10(D), _148); marking necessary through _148 stmt _148 = base_139 + 16; processing: _148 = base_139 + 16; marking necessary through base_139 stmt base_139 = _138->u.l.base; processing: base_139 = _138->u.l.base; marking necessary through _138 stmt _138 = L_10(D)->ci; processing: _138 = L_10(D)->ci; processing: luaF_close (L_10(D), base_139); Marking useful stmt: if (_144 > 0) processing: if (_144 > 0) marking necessary through _144 stmt _144 = _143->sizep; processing: _144 = _143->sizep; marking necessary through _143 stmt _143 = cl_13->p; processing: _143 = cl_13->p; marking necessary through cl_13 stmt cl_13 = _12->value_.gc; processing: cl_13 = _12->value_.gc; marking necessary through _12 stmt _12 = _11->func; processing: _12 = _11->func; marking necessary through _11 stmt _11 = L_10(D)->ci; processing: _11 = L_10(D)->ci; processing: L_10(D)->top = _141; marking necessary through _141 stmt _141 = base_139 + 32; processing: _141 = base_139 + 32; processing: printf ("OP_RETURN(pc=%d) return %d args", 13, 1); processing: MEM[(struct ravi_TValue *)base_19 + 16B].tt_ = 1; marking necessary through base_19 stmt base_19 = _18->u.l.base; processing: base_19 = _18->u.l.base; marking necessary through _18 stmt _18 = L_10(D)->ci; processing: _18 = L_10(D)->ci; processing: MEM[(struct ravi_TValue *)base_19 + 16B].value_.i = _100; marking necessary through _100 stmt _100 = _23->value_.i; processing: _100 = _23->value_.i; marking necessary through _23 stmt _23 = _22->k; processing: _23 = _22->k; marking necessary through _22 stmt _22 = cl_13->p; processing: _22 = cl_13->p; processing: MEM[(struct ravi_TValue *)base_19 + 16B].tt_ = 1; processing: MEM[(struct ravi_TValue *)base_19 + 16B].value_.i = _26; marking necessary through _26 stmt _26 = _23->value_.i; processing: _26 = _23->value_.i; processing: raviV_op_loadnil (_11, 0, 0); Eliminating unnecessary statements: Deleting : if (iftmp.5_6 != 0) Deleting : if (_48 == 0) Deleting : if (iftmp.1_2 != 0) Deleting : if (_108 == 1) Deleting : if (_34 == 1) Redirecting edge 3->4 to 6 Deleting : if (_108 == 0) Deleting : _108 = _23->tt_; Deleting : _82 = 0; Deleting : if (_34 == 0) Deleting : _48 = MEM[(struct ravi_TValue *)base_19 + 16B].value_.b; Deleting : _34 = _23->tt_; Deleting : base_15 = _11->u.l.base; Removing basic block 12 basic block 12, loop depth 0 pred: succ: 13 Removing basic block 11 basic block 11, loop depth 0 pred: 9 10 # iftmp.5_6 = PHI <1(9), 0(10)> succ: 13 Removing basic block 10 basic block 10, loop depth 0 pred: succ: Removing basic block 9 basic block 9, loop depth 0 pred: succ: Removing basic block 7 basic block 7, loop depth 0 pred: succ: 8 Removing basic block 6 basic block 6, loop depth 0 pred: 4 5 3 # iftmp.1_2 = PHI <1(4), 0(5), (3)> succ: 8 Removing basic block 5 basic block 5, loop depth 0 pred: succ: Removing basic block 4 basic block 4, loop depth 0 pred: succ: Removing basic block 3 basic block 3, loop depth 0 pred: succ: Deleting : isfalse_0_4_1 = PHI <1(2)> Deleting : isfalse_0_16_5 = PHI <1(8)> Removed 12 of 41 statements (29%) Removed 2 of 3 PHI nodes (66%) Merging blocks 2 and 8 Merging blocks 2 and 13 fix_loop_structure: fixing up loops for function ravif2 (struct ravi_lua_State * L) { struct ravi_TValue * base; struct ravi_LClosure * cl; isfalse_0_4; comparison_0_5; comparison_0_6; comparison_0_7; isfalse_0_10; comparison_0_11; comparison_0_12; comparison_0_13; isfalse_0_16; comparison_0_17; comparison_0_18; comparison_0_19; comparison_0_22; struct ravi_CallInfo * _11; struct ravi_TValue * _12; struct ravi_CallInfo * _18; struct ravi_Proto * _22; struct ravi_TValue * _23; signed long _26; signed long _100; struct ravi_CallInfo * _138; struct ravi_TValue * _141; struct ravi_Proto * _143; signed int _144; struct ravi_TValue * _148; entry: _11 = L_10(D)->ci; _12 = _11->func; cl_13 = _12->value_.gc; raviV_op_loadnil (_11, 0, 0); _18 = L_10(D)->ci; base_19 = _18->u.l.base; _22 = cl_13->p; _23 = _22->k; _26 = _23->value_.i; MEM[(struct ravi_TValue *)base_19 + 16B].value_.i = _26; MEM[(struct ravi_TValue *)base_19 + 16B].tt_ = 1; _100 = _23->value_.i; MEM[(struct ravi_TValue *)base_19 + 16B].value_.i = _100; MEM[(struct ravi_TValue *)base_19 + 16B].tt_ = 1; printf ("OP_RETURN(pc=%d) return %d args", 13, 1); _138 = L_10(D)->ci; base_139 = _138->u.l.base; _141 = base_139 + 32; L_10(D)->top = _141; _143 = cl_13->p; _144 = _143->sizep; if (_144 > 0) goto (OP_RETURN_if_sizep_gt_0_12_23); else goto (OP_RETURN_else_sizep_gt_0_12_24); OP_RETURN_if_sizep_gt_0_12_23: luaF_close (L_10(D), base_139); OP_RETURN_else_sizep_gt_0_12_24: _148 = base_139 + 16; luaD_poscall (L_10(D), _148); return 1; } ; end of dump from pass_cd_dce (../../src/gcc/tree-ssa-dce.c:1754)