; start of dump from pass_ccp (../../src/gcc/tree-ssa-ccp.c:2425) ;; Function ravif2 (ravif2, funcdef_no=0, decl_uid=364, cgraph_uid=0, symbol_order=0) Immediate_uses: .MEM_1 : --> single use. # .MEM_27 = VDEF <.MEM_1> luaD_poscall (L_3(D), _26); .MEM_2(D) : -->4 uses. # .MEM_7 = VDEF <.MEM_2(D)> raviV_op_loadnil (_4, 0, 0); # VUSE <.MEM_2(D)> cl_6 = _5->value_.gc; # VUSE <.MEM_2(D)> _5 = _4->func; # VUSE <.MEM_2(D)> _4 = L_3(D)->ci; L_3(D) : -->6 uses. L_3(D)->top = _21; _8 = L_3(D)->ci; _19 = L_3(D)->ci; luaF_close (L_3(D), base_20); luaD_poscall (L_3(D), _26); _4 = L_3(D)->ci; _4 : -->2 uses. raviV_op_loadnil (_4, 0, 0); _5 = _4->func; _5 : --> single use. cl_6 = _5->value_.gc; cl_6 : -->2 uses. _23 = cl_6->p; _10 = cl_6->p; .MEM_7 : -->6 uses. # .MEM_13 = VDEF <.MEM_7> MEM[(struct ravi_TValue *)base_9 + 16B].value_.i = _12; # VUSE <.MEM_7> _12 = _11->value_.i; # VUSE <.MEM_7> _11 = _10->k; # VUSE <.MEM_7> _10 = cl_6->p; # VUSE <.MEM_7> base_9 = _8->u.l.base; # VUSE <.MEM_7> _8 = L_3(D)->ci; _8 : --> single use. base_9 = _8->u.l.base; base_9 : -->3 uses. MEM[(struct ravi_TValue *)base_9 + 16B].tt_ = 1; MEM[(struct ravi_TValue *)base_9 + 16B].value_.i = _15; MEM[(struct ravi_TValue *)base_9 + 16B].value_.i = _12; _10 : --> single use. _11 = _10->k; _11 : -->2 uses. _15 = _11->value_.i; _12 = _11->value_.i; _12 : --> single use. MEM[(struct ravi_TValue *)base_9 + 16B].value_.i = _12; .MEM_13 : --> single use. # .MEM_14 = VDEF <.MEM_13> MEM[(struct ravi_TValue *)base_9 + 16B].tt_ = 1; .MEM_14 : -->2 uses. # VUSE <.MEM_14> _15 = _11->value_.i; # .MEM_16 = VDEF <.MEM_14> MEM[(struct ravi_TValue *)base_9 + 16B].value_.i = _15; _15 : --> single use. MEM[(struct ravi_TValue *)base_9 + 16B].value_.i = _15; .MEM_16 : --> single use. # .MEM_18 = VDEF <.MEM_16> printf ("OP_RETURN(pc=%d) return %d args", 13, 1); .MEM_18 : -->3 uses. # .MEM_22 = VDEF <.MEM_18> L_3(D)->top = _21; # VUSE <.MEM_18> base_20 = _19->u.l.base; # VUSE <.MEM_18> _19 = L_3(D)->ci; _19 : --> single use. base_20 = _19->u.l.base; base_20 : -->3 uses. _26 = base_20 + 16; _21 = base_20 + 32; luaF_close (L_3(D), base_20); _21 : --> single use. L_3(D)->top = _21; .MEM_22 : -->4 uses. # .MEM_25 = VDEF <.MEM_22> luaF_close (L_3(D), base_20); .MEM_1 = PHI <.MEM_22(2), .MEM_25(3)> # VUSE <.MEM_22> _24 = _23->sizep; # VUSE <.MEM_22> _23 = cl_6->p; _23 : --> single use. _24 = _23->sizep; _24 : --> single use. if (_24 > 0) .MEM_25 : --> single use. .MEM_1 = PHI <.MEM_22(2), .MEM_25(3)> _26 : --> single use. luaD_poscall (L_3(D), _26); .MEM_27 : --> single use. # VUSE <.MEM_27> return 1; Adding Destination of edge (0 -> 2) to worklist Simulating block 2 Visiting statement: _4 = L_3(D)->ci; which is likely CONSTANT Lattice value changed to VARYING. Adding SSA edges to worklist. Visiting statement: _5 = _4->func; which is likely CONSTANT Lattice value changed to VARYING. Adding SSA edges to worklist. Visiting statement: cl_6 = _5->value_.gc; which is likely CONSTANT Lattice value changed to VARYING. Adding SSA edges to worklist. Visiting statement: _8 = L_3(D)->ci; which is likely CONSTANT Lattice value changed to VARYING. Adding SSA edges to worklist. Visiting statement: base_9 = _8->u.l.base; which is likely CONSTANT Lattice value changed to VARYING. Adding SSA edges to worklist. Visiting statement: _10 = cl_6->p; which is likely CONSTANT Lattice value changed to VARYING. Adding SSA edges to worklist. Visiting statement: _11 = _10->k; which is likely CONSTANT Lattice value changed to VARYING. Adding SSA edges to worklist. Visiting statement: _12 = _11->value_.i; which is likely CONSTANT Lattice value changed to VARYING. Adding SSA edges to worklist. Visiting statement: _15 = _11->value_.i; which is likely CONSTANT Lattice value changed to VARYING. Adding SSA edges to worklist. Visiting statement: _19 = L_3(D)->ci; which is likely CONSTANT Lattice value changed to VARYING. Adding SSA edges to worklist. Visiting statement: base_20 = _19->u.l.base; which is likely CONSTANT Lattice value changed to VARYING. Adding SSA edges to worklist. Visiting statement: _21 = base_20 + 32; which is likely CONSTANT Lattice value changed to VARYING. Adding SSA edges to worklist. Visiting statement: _23 = cl_6->p; which is likely CONSTANT Lattice value changed to VARYING. Adding SSA edges to worklist. Visiting statement: _24 = _23->sizep; which is likely CONSTANT Lattice value changed to VARYING. Adding SSA edges to worklist. Visiting statement: if (_24 > 0) which is likely CONSTANT Adding Destination of edge (2 -> 3) to worklist Adding Destination of edge (2 -> 4) to worklist Simulating statement (from ssa_edges): _26 = base_20 + 16; Simulating block 3 Simulating block 4 Visiting statement: _26 = base_20 + 16; which is likely CONSTANT Lattice value changed to VARYING. Adding SSA edges to worklist. Visiting statement: return 1; No interesting values produced. Marked VARYING. Substituting values and folding statements Folding statement: entry: Not folded Folding statement: _4 = L_3(D)->ci; Not folded Folding statement: _5 = _4->func; Not folded Folding statement: cl_6 = _5->value_.gc; Not folded Folding statement: raviV_op_loadnil (_4, 0, 0); Not folded Folding statement: _8 = L_3(D)->ci; Not folded Folding statement: base_9 = _8->u.l.base; Not folded Folding statement: _10 = cl_6->p; Not folded Folding statement: _11 = _10->k; Not folded Folding statement: _12 = _11->value_.i; Not folded Folding statement: MEM[(struct ravi_TValue *)base_9 + 16B].value_.i = _12; Not folded Folding statement: MEM[(struct ravi_TValue *)base_9 + 16B].tt_ = 1; Not folded Folding statement: _15 = _11->value_.i; Not folded Folding statement: MEM[(struct ravi_TValue *)base_9 + 16B].value_.i = _15; Not folded Folding statement: printf ("OP_RETURN(pc=%d) return %d args", 13, 1); Not folded Folding statement: _19 = L_3(D)->ci; Not folded Folding statement: base_20 = _19->u.l.base; Not folded Folding statement: _21 = base_20 + 32; Not folded Folding statement: L_3(D)->top = _21; Not folded Folding statement: _23 = cl_6->p; Not folded Folding statement: _24 = _23->sizep; Not folded Folding statement: if (_24 > 0) which is likely CONSTANT Not folded Folding statement: OP_RETURN_if_sizep_gt_0_12_23: Not folded Folding statement: luaF_close (L_3(D), base_20); Not folded Folding statement: OP_RETURN_else_sizep_gt_0_12_24: Not folded Folding statement: _26 = base_20 + 16; Not folded Folding statement: luaD_poscall (L_3(D), _26); Not folded Folding statement: return 1; Not folded ravif2 (struct ravi_lua_State * L) { struct ravi_TValue * base; struct ravi_LClosure * cl; struct ravi_CallInfo * _4; struct ravi_TValue * _5; struct ravi_CallInfo * _8; struct ravi_Proto * _10; struct ravi_TValue * _11; signed long _12; signed long _15; struct ravi_CallInfo * _19; struct ravi_TValue * _21; struct ravi_Proto * _23; signed int _24; struct ravi_TValue * _26; entry: _4 = L_3(D)->ci; _5 = _4->func; cl_6 = _5->value_.gc; raviV_op_loadnil (_4, 0, 0); _8 = L_3(D)->ci; base_9 = _8->u.l.base; _10 = cl_6->p; _11 = _10->k; _12 = _11->value_.i; MEM[(struct ravi_TValue *)base_9 + 16B].value_.i = _12; MEM[(struct ravi_TValue *)base_9 + 16B].tt_ = 1; _15 = _11->value_.i; MEM[(struct ravi_TValue *)base_9 + 16B].value_.i = _15; printf ("OP_RETURN(pc=%d) return %d args", 13, 1); _19 = L_3(D)->ci; base_20 = _19->u.l.base; _21 = base_20 + 32; L_3(D)->top = _21; _23 = cl_6->p; _24 = _23->sizep; if (_24 > 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_3(D), base_20); OP_RETURN_else_sizep_gt_0_12_24: _26 = base_20 + 16; luaD_poscall (L_3(D), _26); return 1; } ; end of dump from pass_ccp (../../src/gcc/tree-ssa-ccp.c:2425)