; start of dump from pass_build_ealias (../../src/gcc/tree-ssa-structalias.c:7230) ;; Function ravif2 (ravif2, funcdef_no=0, decl_uid=364, cgraph_uid=0, symbol_order=0) Points-to analysis Constraints: ANYTHING = &ANYTHING ESCAPED = *ESCAPED ESCAPED = ESCAPED + UNKNOWN *ESCAPED = NONLOCAL NONLOCAL = &NONLOCAL NONLOCAL = &ESCAPED INTEGER = &ANYTHING L = &NONLOCAL _11 = *L + 256 _12 = *_11 cl_13 = *_12 _14 = *L + 256 base_15 = *_14 + 256 _16 = *L + 256 ESCAPED = _16 ESCAPED = &NULL ESCAPED = &NULL _18 = *L + 256 base_19 = *_18 + 256 _22 = *cl_13 + 192 _23 = *_22 + 384 _26 = *_23 *base_19 + 128 = _26 _30 = *cl_13 + 192 _31 = *_30 + 384 _34 = *_31 + 64 *base_19 + 192 = _34 _36 = *L + 256 base_37 = *_36 + 256 _40 = *base_37 + 192 _44 = *base_37 + 192 _48 = *base_37 + 128 iftmp.1_2 = &NONLOCAL iftmp.1_2 = &NULL isfalse_0_4_1 = &NONLOCAL isfalse_0_4_1 = &NULL isfalse_0_4_1 = &NONLOCAL _55 = *L + 256 base_56 = *_55 + 256 derefaddrtmp = &NULL *base_56 + 128 = derefaddrtmp derefaddrtmp = &NONLOCAL *base_56 + 192 = derefaddrtmp _63 = *L + 256 base_64 = *_63 + 256 _67 = *base_64 + 192 _71 = *base_64 + 192 _75 = *base_64 + 128 iftmp.3_4 = &NONLOCAL iftmp.3_4 = &NULL isfalse_0_10_3 = &NONLOCAL isfalse_0_10_3 = &NULL isfalse_0_10_3 = &NONLOCAL _82 = isfalse_0_10_3 _92 = *L + 256 base_93 = *_92 + 256 _96 = *cl_13 + 192 _97 = *_96 + 384 _100 = *_97 *base_93 + 128 = _100 _104 = *cl_13 + 192 _105 = *_104 + 384 _108 = *_105 + 64 *base_93 + 192 = _108 _110 = *L + 256 base_111 = *_110 + 256 _114 = *base_111 + 192 _118 = *base_111 + 192 _122 = *base_111 + 128 iftmp.5_6 = &NONLOCAL iftmp.5_6 = &NULL isfalse_0_16_5 = &NONLOCAL isfalse_0_16_5 = &NULL isfalse_0_16_5 = &NONLOCAL _129 = *L + 256 base_130 = *_129 + 256 derefaddrtmp = &NULL *base_130 + 128 = derefaddrtmp derefaddrtmp = &NONLOCAL *base_130 + 192 = derefaddrtmp ESCAPED = &STRING ESCAPED = &NONLOCAL ESCAPED = &NONLOCAL _138 = *L + 256 base_139 = *_138 + 256 _141 = base_139 + 256 *L + 128 = _141 _143 = *cl_13 + 192 _144 = *_143 + 256 _84 = *L + 256 base_85 = *_84 + 256 derefaddrtmp = &NONLOCAL *base_85 = derefaddrtmp derefaddrtmp = &NONLOCAL *base_85 + 64 = derefaddrtmp ESCAPED = L ESCAPED = base_139 _148 = base_139 + 128 ESCAPED = L ESCAPED = _148 ESCAPED = &NONLOCAL Collapsing static cycles and doing variable substitution Building predecessor graph Detecting pointer and location equivalences Rewriting constraints and unifying variables Uniting pointer but not location equivalent variables Finding indirect cycles Solving graph Points-to sets ANYTHING = { ANYTHING } ESCAPED = { NULL STRING ESCAPED NONLOCAL } NONLOCAL = { ESCAPED NONLOCAL } STOREDANYTHING = { } INTEGER = { ANYTHING } L = { NONLOCAL } _11 = { ESCAPED NONLOCAL } _12 = { ESCAPED NONLOCAL } cl_13 = { ESCAPED NONLOCAL } _14 = { ESCAPED NONLOCAL } base_15 = { ESCAPED NONLOCAL } _16 = { ESCAPED NONLOCAL } raviV_op_loadnil = { } _18 = { ESCAPED NONLOCAL } base_19 = { ESCAPED NONLOCAL } _22 = { ESCAPED NONLOCAL } _23 = { ESCAPED NONLOCAL } _26 = { ESCAPED NONLOCAL } _30 = { ESCAPED NONLOCAL } _31 = { ESCAPED NONLOCAL } _34 = { ESCAPED NONLOCAL } _36 = { ESCAPED NONLOCAL } base_37 = { ESCAPED NONLOCAL } _40 = { ESCAPED NONLOCAL } _44 = { ESCAPED NONLOCAL } _48 = { ESCAPED NONLOCAL } iftmp.1_2 = { NULL NONLOCAL } isfalse_0_4_1 = { NULL NONLOCAL } same as iftmp.1_2 _55 = { ESCAPED NONLOCAL } base_56 = { ESCAPED NONLOCAL } derefaddrtmp = { NULL } derefaddrtmp = { NONLOCAL } same as L _63 = { ESCAPED NONLOCAL } base_64 = { ESCAPED NONLOCAL } _67 = { ESCAPED NONLOCAL } _71 = { ESCAPED NONLOCAL } _75 = { ESCAPED NONLOCAL } iftmp.3_4 = { NULL NONLOCAL } same as iftmp.1_2 isfalse_0_10_3 = { NULL NONLOCAL } same as iftmp.1_2 _82 = { NULL NONLOCAL } same as iftmp.1_2 _92 = { ESCAPED NONLOCAL } base_93 = { ESCAPED NONLOCAL } _96 = { ESCAPED NONLOCAL } _97 = { ESCAPED NONLOCAL } _100 = { ESCAPED NONLOCAL } _104 = { ESCAPED NONLOCAL } _105 = { ESCAPED NONLOCAL } _108 = { ESCAPED NONLOCAL } _110 = { ESCAPED NONLOCAL } base_111 = { ESCAPED NONLOCAL } _114 = { ESCAPED NONLOCAL } _118 = { ESCAPED NONLOCAL } _122 = { ESCAPED NONLOCAL } iftmp.5_6 = { NULL NONLOCAL } same as iftmp.1_2 isfalse_0_16_5 = { NULL NONLOCAL } same as iftmp.1_2 _129 = { ESCAPED NONLOCAL } base_130 = { ESCAPED NONLOCAL } derefaddrtmp = { NULL } same as derefaddrtmp derefaddrtmp = { NONLOCAL } same as L printf = { } _138 = { ESCAPED NONLOCAL } base_139 = { ESCAPED NONLOCAL } _141 = { ESCAPED NONLOCAL } _143 = { ESCAPED NONLOCAL } _144 = { ESCAPED NONLOCAL } _84 = { ESCAPED NONLOCAL } base_85 = { ESCAPED NONLOCAL } derefaddrtmp = { NONLOCAL } same as L derefaddrtmp = { NONLOCAL } same as L luaF_close = { } _148 = { ESCAPED NONLOCAL } luaD_poscall = { } Alias information for ravif2 Aliased symbols Call clobber information ESCAPED, points-to non-local, points-to NULL, points-to vars: { } Flow-insensitive points-to information L_10(D), points-to non-local, points-to vars: { } _11, points-to non-local, points-to escaped, points-to vars: { } _12, points-to non-local, points-to escaped, points-to vars: { } cl_13, points-to non-local, points-to escaped, points-to vars: { } _14, points-to non-local, points-to escaped, points-to vars: { } base_15, points-to non-local, points-to escaped, points-to vars: { } _16, points-to non-local, points-to escaped, points-to vars: { } _18, points-to non-local, points-to escaped, points-to vars: { } base_19, points-to non-local, points-to escaped, points-to vars: { } _22, points-to non-local, points-to escaped, points-to vars: { } _23, points-to non-local, points-to escaped, points-to vars: { } _30, points-to non-local, points-to escaped, points-to vars: { } _31, points-to non-local, points-to escaped, points-to vars: { } _36, points-to non-local, points-to escaped, points-to vars: { } base_37, points-to non-local, points-to escaped, points-to vars: { } _55, points-to non-local, points-to escaped, points-to vars: { } base_56, points-to non-local, points-to escaped, points-to vars: { } _63, points-to non-local, points-to escaped, points-to vars: { } base_64, points-to non-local, points-to escaped, points-to vars: { } _84, points-to non-local, points-to escaped, points-to vars: { } base_85, points-to non-local, points-to escaped, points-to vars: { } _92, points-to non-local, points-to escaped, points-to vars: { } base_93, points-to non-local, points-to escaped, points-to vars: { } _96, points-to non-local, points-to escaped, points-to vars: { } _97, points-to non-local, points-to escaped, points-to vars: { } _104, points-to non-local, points-to escaped, points-to vars: { } _105, points-to non-local, points-to escaped, points-to vars: { } _110, points-to non-local, points-to escaped, points-to vars: { } base_111, points-to non-local, points-to escaped, points-to vars: { } _129, points-to non-local, points-to escaped, points-to vars: { } base_130, points-to non-local, points-to escaped, points-to vars: { } _138, points-to non-local, points-to escaped, points-to vars: { } base_139, points-to non-local, points-to escaped, points-to vars: { } _141, points-to non-local, points-to escaped, points-to vars: { } _143, points-to non-local, points-to escaped, points-to vars: { } _148, points-to non-local, points-to escaped, points-to vars: { } 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; iftmp.1_2; iftmp.3_4; iftmp.5_6; struct ravi_CallInfo * _11; struct ravi_TValue * _12; struct ravi_CallInfo * _14; struct ravi_CallInfo * _16; struct ravi_CallInfo * _18; struct ravi_Proto * _22; struct ravi_TValue * _23; signed long _26; struct ravi_Proto * _30; struct ravi_TValue * _31; signed int _34; struct ravi_CallInfo * _36; signed int _40; signed int _44; signed int _48; struct ravi_CallInfo * _55; struct ravi_CallInfo * _63; signed int _67; signed int _71; signed int _75; _82; struct ravi_CallInfo * _84; struct ravi_CallInfo * _92; struct ravi_Proto * _96; struct ravi_TValue * _97; signed long _100; struct ravi_Proto * _104; struct ravi_TValue * _105; signed int _108; struct ravi_CallInfo * _110; signed int _114; signed int _118; signed int _122; struct ravi_CallInfo * _129; 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; _14 = L_10(D)->ci; base_15 = _14->u.l.base; _16 = L_10(D)->ci; raviV_op_loadnil (_16, 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; _30 = cl_13->p; _31 = _30->k; _34 = _31->tt_; MEM[(struct ravi_TValue *)base_19 + 16B].tt_ = _34; _36 = L_10(D)->ci; base_37 = _36->u.l.base; _40 = MEM[(struct ravi_TValue *)base_37 + 16B].tt_; _44 = MEM[(struct ravi_TValue *)base_37 + 16B].tt_; _48 = MEM[(struct ravi_TValue *)base_37 + 16B].value_.b; if (_40 == 0) goto ; else goto ; : if (_44 == 1) goto ; else goto ; : if (_48 == 0) goto ; else goto ; : : # iftmp.1_2 = PHI <1(4), 0(5)> if (iftmp.1_2 != 0) goto ; else goto ; : : # isfalse_0_4_1 = PHI <1(6), 0(7), 1(2)> _55 = L_10(D)->ci; base_56 = _55->u.l.base; MEM[(struct ravi_TValue *)base_56 + 16B].value_.b = 0; MEM[(struct ravi_TValue *)base_56 + 16B].tt_ = 1; _63 = L_10(D)->ci; base_64 = _63->u.l.base; _67 = MEM[(struct ravi_TValue *)base_64 + 16B].tt_; _71 = MEM[(struct ravi_TValue *)base_64 + 16B].tt_; _75 = MEM[(struct ravi_TValue *)base_64 + 16B].value_.b; if (_67 == 0) goto ; else goto ; : if (_71 == 1) goto ; else goto ; : if (_75 == 0) goto ; else goto ; : : # iftmp.3_4 = PHI <1(10), 0(11)> if (iftmp.3_4 != 0) goto ; else goto ; : : # isfalse_0_10_3 = PHI <1(12), 0(13), 1(8)> _82 = ~isfalse_0_10_3; if (isfalse_0_10_3 != 0) goto (OP_TEST_do_jmp_5_14); else goto (OP_TEST_do_skip_5_15); OP_TEST_do_jmp_5_14: jmp_9_2: _92 = L_10(D)->ci; base_93 = _92->u.l.base; _96 = cl_13->p; _97 = _96->k; _100 = _97->value_.i; MEM[(struct ravi_TValue *)base_93 + 16B].value_.i = _100; _104 = cl_13->p; _105 = _104->k; _108 = _105->tt_; MEM[(struct ravi_TValue *)base_93 + 16B].tt_ = _108; _110 = L_10(D)->ci; base_111 = _110->u.l.base; _114 = MEM[(struct ravi_TValue *)base_111 + 16B].tt_; _118 = MEM[(struct ravi_TValue *)base_111 + 16B].tt_; _122 = MEM[(struct ravi_TValue *)base_111 + 16B].value_.b; if (_114 == 0) goto ; else goto ; : if (_118 == 1) goto ; else goto ; : if (_122 == 0) goto ; else goto ; : : # iftmp.5_6 = PHI <1(17), 0(18)> if (iftmp.5_6 != 0) goto ; else goto ; : : # isfalse_0_16_5 = PHI <1(19), 0(20), 1(15)> _129 = L_10(D)->ci; base_130 = _129->u.l.base; MEM[(struct ravi_TValue *)base_130 + 16B].value_.b = 0; MEM[(struct ravi_TValue *)base_130 + 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_TEST_do_skip_5_15: _84 = L_10(D)->ci; base_85 = _84->u.l.base; base_85->value_.b = 1; base_85->tt_ = 1; goto (OP_TEST_do_jmp_5_14); 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_build_ealias (../../src/gcc/tree-ssa-structalias.c:7230)