; start of dump from pass_build_alias (../../src/gcc/tree-ssa-structalias.c:7192) ;; 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 _4 = *L + 256 _5 = *_4 cl_6 = *_5 ESCAPED = _4 ESCAPED = &NULL ESCAPED = &NULL _8 = *L + 256 base_9 = *_8 + 256 _10 = *cl_6 + 192 _11 = *_10 + 384 _12 = *_11 *base_9 + 128 = _12 derefaddrtmp = &NONLOCAL *base_9 + 192 = derefaddrtmp _15 = *_11 *base_9 + 128 = _15 derefaddrtmp = &NONLOCAL *base_9 + 192 = derefaddrtmp ESCAPED = &STRING ESCAPED = &NONLOCAL ESCAPED = &NONLOCAL _19 = *L + 256 base_20 = *_19 + 256 _21 = base_20 + 256 *L + 128 = _21 _23 = *cl_6 + 192 _24 = *_23 + 256 ESCAPED = L ESCAPED = base_20 _26 = base_20 + 128 ESCAPED = L ESCAPED = _26 ESCAPED = &NONLOCAL Collapsing static cycles and doing variable substitution Building predecessor graph Detecting pointer and location equivalences Found location equivalence for node STRING Equivalence classes for indirect node id 1 "NULL": pointer 1, location 1 Equivalence classes for indirect node id 2 "ANYTHING": pointer 2, location 2 Equivalence classes for indirect node id 3 "STRING": pointer 3, location 1 Equivalence classes for indirect node id 4 "ESCAPED": pointer 10, location 3 Equivalence classes for indirect node id 5 "NONLOCAL": pointer 8, location 4 Equivalence classes for direct node id 6 "STOREDANYTHING": pointer 0, location 0 Equivalence classes for indirect node id 7 "INTEGER": pointer 11, location 0 Equivalence classes for direct node id 8 "L": pointer 4, location 0 Equivalence classes for indirect node id 9 "_4": pointer 5, location 0 Equivalence classes for direct node id 10 "_5": pointer 12, location 0 Equivalence classes for direct node id 11 "cl_6": pointer 13, location 0 Equivalence classes for direct node id 12 "raviV_op_loadnil": pointer 0, location 0 Equivalence classes for indirect node id 13 "_8": pointer 14, location 0 Equivalence classes for indirect node id 14 "base_9": pointer 15, location 0 Equivalence classes for indirect node id 15 "_10": pointer 16, location 0 Equivalence classes for indirect node id 16 "_11": pointer 17, location 0 Equivalence classes for direct node id 17 "_12": pointer 18, location 0 Equivalence classes for direct node id 18 "derefaddrtmp": pointer 4, location 0 Equivalence classes for direct node id 19 "_15": pointer 18, location 0 Equivalence classes for direct node id 20 "derefaddrtmp": pointer 4, location 0 Equivalence classes for direct node id 21 "printf": pointer 0, location 0 Equivalence classes for indirect node id 22 "_19": pointer 19, location 0 Equivalence classes for indirect node id 23 "base_20": pointer 6, location 0 Equivalence classes for indirect node id 24 "_21": pointer 20, location 0 Equivalence classes for indirect node id 25 "_23": pointer 21, location 0 Equivalence classes for indirect node id 26 "_24": pointer 22, location 0 Equivalence classes for direct node id 27 "luaF_close": pointer 0, location 0 Equivalence classes for indirect node id 28 "_26": pointer 7, location 0 Equivalence classes for direct node id 29 "luaD_poscall": pointer 0, location 0 STOREDANYTHING is a non-pointer variable, eliminating edges. raviV_op_loadnil is a non-pointer variable, eliminating edges. printf is a non-pointer variable, eliminating edges. luaF_close is a non-pointer variable, eliminating edges. luaD_poscall is a non-pointer variable, eliminating edges. Rewriting constraints and unifying variables Unifying derefaddrtmp to L Unifying _15 to _12 Unifying derefaddrtmp to L 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 } _4 = { ESCAPED NONLOCAL } _5 = { ESCAPED NONLOCAL } cl_6 = { ESCAPED NONLOCAL } raviV_op_loadnil = { } _8 = { ESCAPED NONLOCAL } base_9 = { ESCAPED NONLOCAL } _10 = { ESCAPED NONLOCAL } _11 = { ESCAPED NONLOCAL } _12 = { ESCAPED NONLOCAL } derefaddrtmp = { NONLOCAL } same as L _15 = { ESCAPED NONLOCAL } same as _12 derefaddrtmp = { NONLOCAL } same as L printf = { } _19 = { ESCAPED NONLOCAL } base_20 = { ESCAPED NONLOCAL } _21 = { ESCAPED NONLOCAL } _23 = { ESCAPED NONLOCAL } _24 = { ESCAPED NONLOCAL } luaF_close = { } _26 = { 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_3(D), points-to non-local, points-to vars: { } _4, points-to non-local, points-to escaped, points-to vars: { } _5, points-to non-local, points-to escaped, points-to vars: { } cl_6, points-to non-local, points-to escaped, points-to vars: { } _8, points-to non-local, points-to escaped, points-to vars: { } base_9, points-to non-local, points-to escaped, points-to vars: { } _10, points-to non-local, points-to escaped, points-to vars: { } _11, points-to non-local, points-to escaped, points-to vars: { } _19, points-to non-local, points-to escaped, points-to vars: { } base_20, points-to non-local, points-to escaped, points-to vars: { } _21, points-to non-local, points-to escaped, points-to vars: { } _23, points-to non-local, points-to escaped, points-to vars: { } _26, points-to non-local, points-to escaped, points-to vars: { } 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; MEM[(struct ravi_TValue *)base_9 + 16B].tt_ = 1; 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_build_alias (../../src/gcc/tree-ssa-structalias.c:7192)