; start of dump from pass_build_cfg (../../src/gcc/tree-cfg.c:397) ;; Function ravif2 (ravif2, funcdef_no=0, decl_uid=364, cgraph_uid=0, symbol_order=0) Scope blocks: { Scope block #0 (unused) comparison_0_26; comparison_0_22; comparison_0_19; comparison_0_18; comparison_0_17; isfalse_0_16; comparison_0_13; comparison_0_12; comparison_0_11; isfalse_0_10; comparison_0_7; comparison_0_6; comparison_0_5; isfalse_0_4; struct ravi_LClosure * cl; struct ravi_TValue * base; } Removing basic block 40 basic block 40, loop depth 0 pred: 38 39 OP_RETURN_else_sizep_gt_0_13_28: D.403 = 0; D.444 = base + D.403; luaD_poscall (L, D.444); D.445 = 1; succ: 41 Removing basic block 39 basic block 39, loop depth 0 pred: 38 OP_RETURN_if_sizep_gt_0_13_27: luaF_close (L, base); succ: Removing basic block 38 basic block 38, loop depth 0 pred: OP_RETURN_13_25: printf ("OP_RETURN(pc=%d) return %d args", 14, 0); D.397 = L->ci; base = D.397->u.l.base; D.403 = 0; D.444 = base + D.403; L->top = D.444; D.401 = cl->p; D.443 = D.401->sizep; comparison_0_26 = D.443 > 0; if (comparison_0_26 != 0) succ: Removing basic block 30 basic block 30, loop depth 0 pred: goto (OP_TEST_do_jmp_2_8); succ: 11 Removing basic block 31 basic block 31, loop depth 0 pred: goto (OP_TEST_do_skip_2_9); succ: 11 Removing basic block 32 basic block 32, loop depth 0 pred: goto (OP_TEST_do_jmp_5_14); succ: 20 Removing basic block 34 basic block 34, loop depth 0 pred: goto (OP_TEST_do_jmp_9_20); succ: 29 Removing basic block 35 basic block 35, loop depth 0 pred: goto (OP_TEST_do_skip_9_21); succ: 29 Merging blocks 37 and 41 Merging blocks 10 and 11 Merging blocks 28 and 29 ;; 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 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 ;; 2 succs { 8 3 } ;; 3 succs { 4 6 } ;; 4 succs { 5 6 } ;; 5 succs { 7 } ;; 6 succs { 7 } ;; 7 succs { 8 9 } ;; 8 succs { 10 } ;; 9 succs { 10 } ;; 10 succs { 16 11 } ;; 11 succs { 12 14 } ;; 12 succs { 13 14 } ;; 13 succs { 15 } ;; 14 succs { 15 } ;; 15 succs { 16 17 } ;; 16 succs { 18 } ;; 17 succs { 18 } ;; 18 succs { 19 28 } ;; 19 succs { 25 20 } ;; 20 succs { 21 23 } ;; 21 succs { 22 23 } ;; 22 succs { 24 } ;; 23 succs { 24 } ;; 24 succs { 25 26 } ;; 25 succs { 27 } ;; 26 succs { 27 } ;; 27 succs { 29 30 } ;; 28 succs { 19 } ;; 29 succs { 30 } ;; 30 succs { 1 } 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; comparison_0_26; signed int D.445; struct ravi_TValue * D.444; signed int D.443; struct ravi_TValue * D.442; sizetype D.441; iftmp.5; iftmp.4; signed int D.430; D.429; iftmp.3; iftmp.2; iftmp.1; iftmp.0; signed int D.408; signed int D.407; signed int D.406; signed long D.405; struct ravi_TValue * D.404; sizetype D.403; struct ravi_TValue * D.402; struct ravi_Proto * D.401; struct ravi_TValue * D.400; sizetype D.399; struct ravi_TValue * D.398; struct ravi_CallInfo * D.397; entry: D.397 = L->ci; D.398 = D.397->func; cl = D.398->value_.gc; D.397 = L->ci; base = D.397->u.l.base; D.397 = L->ci; raviV_op_loadnil (D.397, 0, 0); D.397 = L->ci; base = D.397->u.l.base; D.399 = 16; D.400 = base + D.399; D.401 = cl->p; D.402 = D.401->k; D.403 = 0; D.404 = D.402 + D.403; D.405 = D.404->value_.i; D.400->value_.i = D.405; D.399 = 16; D.400 = base + D.399; D.401 = cl->p; D.402 = D.401->k; D.403 = 0; D.404 = D.402 + D.403; D.406 = D.404->tt_; D.400->tt_ = D.406; D.397 = L->ci; base = D.397->u.l.base; D.399 = 16; D.400 = base + D.399; D.407 = D.400->tt_; comparison_0_5 = D.407 == 0; D.399 = 16; D.400 = base + D.399; D.407 = D.400->tt_; comparison_0_6 = D.407 == 1; D.399 = 16; D.400 = base + D.399; D.408 = D.400->value_.b; comparison_0_7 = D.408 == 0; if (comparison_0_5 != 0) goto ; else goto ; : if (comparison_0_6 != 0) goto ; else goto ; : if (comparison_0_7 != 0) goto ; else goto ; : iftmp.1 = 1; goto ; : iftmp.1 = 0; : if (iftmp.1 != 0) goto ; else goto ; : iftmp.0 = 1; goto ; : iftmp.0 = 0; : isfalse_0_4 = iftmp.0; D.397 = L->ci; base = D.397->u.l.base; D.399 = 16; D.400 = base + D.399; D.400->value_.b = 0; D.399 = 16; D.400 = base + D.399; D.400->tt_ = 1; D.397 = L->ci; base = D.397->u.l.base; D.399 = 16; D.400 = base + D.399; D.407 = D.400->tt_; comparison_0_11 = D.407 == 0; D.399 = 16; D.400 = base + D.399; D.407 = D.400->tt_; comparison_0_12 = D.407 == 1; D.399 = 16; D.400 = base + D.399; D.408 = D.400->value_.b; comparison_0_13 = D.408 == 0; if (comparison_0_11 != 0) goto ; else goto ; : if (comparison_0_12 != 0) goto ; else goto ; : if (comparison_0_13 != 0) goto ; else goto ; : iftmp.3 = 1; goto ; : iftmp.3 = 0; : if (iftmp.3 != 0) goto ; else goto ; : iftmp.2 = 1; goto ; : iftmp.2 = 0; : isfalse_0_10 = iftmp.2; D.429 = ~isfalse_0_10; D.430 = (signed int) D.429; if (D.430 == 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: D.397 = L->ci; base = D.397->u.l.base; D.399 = 16; D.400 = base + D.399; D.401 = cl->p; D.402 = D.401->k; D.403 = 0; D.404 = D.402 + D.403; D.405 = D.404->value_.i; D.400->value_.i = D.405; D.399 = 16; D.400 = base + D.399; D.401 = cl->p; D.402 = D.401->k; D.403 = 0; D.404 = D.402 + D.403; D.406 = D.404->tt_; D.400->tt_ = D.406; D.397 = L->ci; base = D.397->u.l.base; D.399 = 16; D.400 = base + D.399; D.407 = D.400->tt_; comparison_0_17 = D.407 == 0; D.399 = 16; D.400 = base + D.399; D.407 = D.400->tt_; comparison_0_18 = D.407 == 1; D.399 = 16; D.400 = base + D.399; D.408 = D.400->value_.b; comparison_0_19 = D.408 == 0; if (comparison_0_17 != 0) goto ; else goto ; : if (comparison_0_18 != 0) goto ; else goto ; : if (comparison_0_19 != 0) goto ; else goto ; : iftmp.5 = 1; goto ; : iftmp.5 = 0; : if (iftmp.5 != 0) goto ; else goto ; : iftmp.4 = 1; goto ; : iftmp.4 = 0; : isfalse_0_16 = iftmp.4; D.397 = L->ci; base = D.397->u.l.base; D.399 = 16; D.400 = base + D.399; D.400->value_.b = 0; D.399 = 16; D.400 = base + D.399; D.400->tt_ = 1; printf ("OP_RETURN(pc=%d) return %d args", 13, 1); D.397 = L->ci; base = D.397->u.l.base; D.441 = 32; D.442 = base + D.441; L->top = D.442; D.401 = cl->p; D.443 = D.401->sizep; comparison_0_22 = D.443 > 0; if (comparison_0_22 != 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: D.397 = L->ci; base = D.397->u.l.base; D.403 = 0; D.444 = base + D.403; D.444->value_.b = 1; D.403 = 0; D.444 = base + D.403; D.444->tt_ = 1; goto (OP_TEST_do_jmp_5_14); OP_RETURN_if_sizep_gt_0_12_23: luaF_close (L, base); OP_RETURN_else_sizep_gt_0_12_24: D.399 = 16; D.400 = base + D.399; luaD_poscall (L, D.400); D.445 = 1; return D.445; } ; end of dump from pass_build_cfg (../../src/gcc/tree-cfg.c:397)