Skip to content

Commit 0684b9f

Browse files
committed
Always print numeric opline numbers
1 parent a524785 commit 0684b9f

34 files changed

+507
-510
lines changed

ext/opcache/Optimizer/zend_dump.c

Lines changed: 26 additions & 97 deletions
Original file line numberDiff line numberDiff line change
@@ -605,10 +605,8 @@ void zend_dump_op(const zend_op_array *op_array, const zend_basic_block *b, cons
605605
if (ZEND_VM_OP_JMP_ADDR == (op1_flags & ZEND_VM_OP_MASK)) {
606606
if (b) {
607607
fprintf(stderr, " BB%d", b->successors[n++]);
608-
} else if (dump_flags & ZEND_DUMP_NUMERIC_OPLINES) {
609-
fprintf(stderr, " %04u", (uint32_t)(OP_JMP_ADDR(opline, opline->op1) - op_array->opcodes));
610608
} else {
611-
fprintf(stderr, " L%u", (uint32_t)(OP_JMP_ADDR(opline, opline->op1) - op_array->opcodes));
609+
fprintf(stderr, " %04u", (uint32_t)(OP_JMP_ADDR(opline, opline->op1) - op_array->opcodes));
612610
}
613611
} else {
614612
zend_dump_unused_op(opline, opline->op1, op1_flags);
@@ -630,10 +628,8 @@ void zend_dump_op(const zend_op_array *op_array, const zend_basic_block *b, cons
630628
}
631629
if (b) {
632630
fprintf(stderr, " BB%d,", b->successors[n++]);
633-
} else if (dump_flags & ZEND_DUMP_NUMERIC_OPLINES) {
634-
fprintf(stderr, " %04u,", (uint32_t)ZEND_OFFSET_TO_OPLINE_NUM(op_array, opline, Z_LVAL_P(zv)));
635631
} else {
636-
fprintf(stderr, " L%u,", (uint32_t)ZEND_OFFSET_TO_OPLINE_NUM(op_array, opline, Z_LVAL_P(zv)));
632+
fprintf(stderr, " %04u,", (uint32_t)ZEND_OFFSET_TO_OPLINE_NUM(op_array, opline, Z_LVAL_P(zv)));
637633
}
638634
} ZEND_HASH_FOREACH_END();
639635
fprintf(stderr, " default:");
@@ -667,10 +663,8 @@ void zend_dump_op(const zend_op_array *op_array, const zend_basic_block *b, cons
667663
if (opline->opcode != ZEND_CATCH || !(opline->extended_value & ZEND_LAST_CATCH)) {
668664
if (b) {
669665
fprintf(stderr, " BB%d", b->successors[n++]);
670-
} else if (dump_flags & ZEND_DUMP_NUMERIC_OPLINES) {
671-
fprintf(stderr, " %04u", (uint32_t)(OP_JMP_ADDR(opline, opline->op2) - op_array->opcodes));
672666
} else {
673-
fprintf(stderr, " L%u", (uint32_t)(OP_JMP_ADDR(opline, opline->op2) - op_array->opcodes));
667+
fprintf(stderr, " %04u", (uint32_t)(OP_JMP_ADDR(opline, opline->op2) - op_array->opcodes));
674668
}
675669
}
676670
} else {
@@ -681,10 +675,8 @@ void zend_dump_op(const zend_op_array *op_array, const zend_basic_block *b, cons
681675
if (ZEND_VM_EXT_JMP_ADDR == (flags & ZEND_VM_EXT_MASK)) {
682676
if (b) {
683677
fprintf(stderr, " BB%d", b->successors[n++]);
684-
} else if (dump_flags & ZEND_DUMP_NUMERIC_OPLINES) {
685-
fprintf(stderr, " %04u", (uint32_t)ZEND_OFFSET_TO_OPLINE_NUM(op_array, opline, opline->extended_value));
686678
} else {
687-
fprintf(stderr, " L%u", (uint32_t)ZEND_OFFSET_TO_OPLINE_NUM(op_array, opline, opline->extended_value));
679+
fprintf(stderr, " %04u", (uint32_t)ZEND_OFFSET_TO_OPLINE_NUM(op_array, opline, opline->extended_value));
688680
}
689681
}
690682
if (opline->result_type == IS_CONST) {
@@ -724,15 +716,8 @@ static void zend_dump_op_line(const zend_op_array *op_array, const zend_basic_bl
724716
const zend_ssa *ssa = NULL;
725717
zend_ssa_op *ssa_op = NULL;
726718

727-
if (dump_flags & ZEND_DUMP_NUMERIC_OPLINES) {
728-
len = fprintf(stderr, "%04u", (uint32_t)(opline - op_array->opcodes));
729-
fprintf(stderr, "%*c", 5-len, ' ');
730-
} else if (!b) {
731-
len = fprintf(stderr, "L%u (%u):", (uint32_t)(opline - op_array->opcodes), opline->lineno);
732-
fprintf(stderr, "%*c", 12-len, ' ');
733-
} else {
734-
fprintf(stderr, "%*c", 12-len, ' ');
735-
}
719+
len = fprintf(stderr, "%04u", (uint32_t)(opline - op_array->opcodes));
720+
fprintf(stderr, "%*c", 5-len, ' ');
736721

737722
if (dump_flags & ZEND_DUMP_SSA) {
738723
ssa = (const zend_ssa*)data;
@@ -749,10 +734,7 @@ static void zend_dump_block_info(const zend_cfg *cfg, int n, uint32_t dump_flags
749734
{
750735
zend_basic_block *b = cfg->blocks + n;
751736

752-
fprintf(stderr, "BB%d:", n);
753-
if (dump_flags & ZEND_DUMP_NUMERIC_OPLINES) {
754-
fprintf(stderr, "\n ;");
755-
}
737+
fprintf(stderr, "BB%d:\n ;", n);
756738
if (b->flags & ZEND_BB_START) {
757739
fprintf(stderr, " start");
758740
}
@@ -806,10 +788,7 @@ static void zend_dump_block_info(const zend_cfg *cfg, int n, uint32_t dump_flags
806788
int *p = cfg->predecessors + b->predecessor_offset;
807789
int *end = p + b->predecessors_count;
808790

809-
if (dump_flags & ZEND_DUMP_NUMERIC_OPLINES) {
810-
fprintf(stderr, " ");
811-
}
812-
fprintf(stderr, " ; from=(BB%d", *p);
791+
fprintf(stderr, " ; from=(BB%d", *p);
813792
for (p++; p < end; p++) {
814793
fprintf(stderr, ", BB%d", *p);
815794
}
@@ -818,40 +797,25 @@ static void zend_dump_block_info(const zend_cfg *cfg, int n, uint32_t dump_flags
818797

819798
if (b->successors_count > 0) {
820799
int s;
821-
if (dump_flags & ZEND_DUMP_NUMERIC_OPLINES) {
822-
fprintf(stderr, " ");
823-
}
824-
fprintf(stderr, " ; to=(BB%d", b->successors[0]);
800+
fprintf(stderr, " ; to=(BB%d", b->successors[0]);
825801
for (s = 1; s < b->successors_count; s++) {
826802
fprintf(stderr, ", BB%d", b->successors[s]);
827803
}
828804
fprintf(stderr, ")\n");
829805
}
830806

831807
if (b->idom >= 0) {
832-
if (dump_flags & ZEND_DUMP_NUMERIC_OPLINES) {
833-
fprintf(stderr, " ");
834-
}
835-
fprintf(stderr, " ; idom=BB%d\n", b->idom);
808+
fprintf(stderr, " ; idom=BB%d\n", b->idom);
836809
}
837810
if (b->level >= 0) {
838-
if (dump_flags & ZEND_DUMP_NUMERIC_OPLINES) {
839-
fprintf(stderr, " ");
840-
}
841-
fprintf(stderr, " ; level=%d\n", b->level);
811+
fprintf(stderr, " ; level=%d\n", b->level);
842812
}
843813
if (b->loop_header >= 0) {
844-
if (dump_flags & ZEND_DUMP_NUMERIC_OPLINES) {
845-
fprintf(stderr, " ");
846-
}
847-
fprintf(stderr, " ; loop_header=%d\n", b->loop_header);
814+
fprintf(stderr, " ; loop_header=%d\n", b->loop_header);
848815
}
849816
if (b->children >= 0) {
850817
int j = b->children;
851-
if (dump_flags & ZEND_DUMP_NUMERIC_OPLINES) {
852-
fprintf(stderr, " ");
853-
}
854-
fprintf(stderr, " ; children=(BB%d", j);
818+
fprintf(stderr, " ; children=(BB%d", j);
855819
j = cfg->blocks[j].next_child;
856820
while (j >= 0) {
857821
fprintf(stderr, ", BB%d", j);
@@ -870,11 +834,7 @@ static void zend_dump_block_header(const zend_cfg *cfg, const zend_op_array *op_
870834
do {
871835
int j;
872836

873-
if (dump_flags & ZEND_DUMP_NUMERIC_OPLINES) {
874-
fprintf(stderr, " ");
875-
} else {
876-
fprintf(stderr, " ");
877-
}
837+
fprintf(stderr, " ");
878838
zend_dump_ssa_var(op_array, ssa, p->ssa_var, 0, p->var, dump_flags);
879839
if (p->pi < 0) {
880840
fprintf(stderr, " = Phi(");
@@ -945,11 +905,7 @@ void zend_dump_op_array(const zend_op_array *op_array, uint32_t dump_flags, cons
945905

946906
fprintf(stderr, "\n");
947907
zend_dump_op_array_name(op_array);
948-
fprintf(stderr, ":");
949-
if (dump_flags & ZEND_DUMP_NUMERIC_OPLINES) {
950-
fprintf(stderr, "\n ");
951-
}
952-
fprintf(stderr, " ; (lines=%d, args=%d",
908+
fprintf(stderr, ":\n ; (lines=%d, args=%d",
953909
op_array->last,
954910
op_array->num_args);
955911
if (func_info && func_info->num_args >= 0) {
@@ -1008,46 +964,31 @@ void zend_dump_op_array(const zend_op_array *op_array, uint32_t dump_flags, cons
1008964
}
1009965
fprintf(stderr, ")\n");
1010966
if (msg) {
1011-
if (dump_flags & ZEND_DUMP_NUMERIC_OPLINES) {
1012-
fprintf(stderr, " ");
1013-
}
1014-
fprintf(stderr, " ; (%s)\n", msg);
1015-
}
1016-
if (dump_flags & ZEND_DUMP_NUMERIC_OPLINES) {
1017-
fprintf(stderr, " ");
967+
fprintf(stderr, " ; (%s)\n", msg);
1018968
}
1019-
fprintf(stderr, " ; %s:%u-%u\n", op_array->filename->val, op_array->line_start, op_array->line_end);
969+
fprintf(stderr, " ; %s:%u-%u\n", op_array->filename->val, op_array->line_start, op_array->line_end);
1020970

1021971
if (func_info && func_info->num_args > 0) {
1022972
uint32_t j;
1023973

1024974
for (j = 0; j < MIN(op_array->num_args, func_info->num_args ); j++) {
1025-
if (dump_flags & ZEND_DUMP_NUMERIC_OPLINES) {
1026-
fprintf(stderr, " ");
1027-
}
1028-
fprintf(stderr, " ; arg %d ", j);
975+
fprintf(stderr, " ; arg %d ", j);
1029976
zend_dump_type_info(func_info->arg_info[j].info.type, func_info->arg_info[j].info.ce, func_info->arg_info[j].info.is_instanceof, dump_flags);
1030977
zend_dump_range(&func_info->arg_info[j].info.range);
1031978
fprintf(stderr, "\n");
1032979
}
1033980
}
1034981

1035982
if (func_info) {
1036-
if (dump_flags & ZEND_DUMP_NUMERIC_OPLINES) {
1037-
fprintf(stderr, " ");
1038-
}
1039-
fprintf(stderr, " ; return ");
983+
fprintf(stderr, " ; return ");
1040984
zend_dump_type_info(func_info->return_info.type, func_info->return_info.ce, func_info->return_info.is_instanceof, dump_flags);
1041985
zend_dump_range(&func_info->return_info.range);
1042986
fprintf(stderr, "\n");
1043987
}
1044988

1045989
if (ssa && ssa->var_info) {
1046990
for (i = 0; i < op_array->last_var; i++) {
1047-
if (dump_flags & ZEND_DUMP_NUMERIC_OPLINES) {
1048-
fprintf(stderr, " ");
1049-
}
1050-
fprintf(stderr, " ; ");
991+
fprintf(stderr, " ; ");
1051992
zend_dump_ssa_var(op_array, ssa, i, IS_CV, i, dump_flags);
1052993
fprintf(stderr, "\n");
1053994
}
@@ -1076,9 +1017,7 @@ void zend_dump_op_array(const zend_op_array *op_array, uint32_t dump_flags, cons
10761017
fprintf(stderr, "LIVE RANGES:\n");
10771018
for (i = 0; i < op_array->last_live_range; i++) {
10781019
fprintf(stderr,
1079-
(dump_flags & ZEND_DUMP_NUMERIC_OPLINES) ?
1080-
" %u: %04u - %04u " :
1081-
" %u: L%u - L%u ",
1020+
" %u: %04u - %04u ",
10821021
EX_VAR_TO_NUM(op_array->live_range[i].var & ~ZEND_LIVE_MASK),
10831022
op_array->live_range[i].start,
10841023
op_array->live_range[i].end);
@@ -1138,9 +1077,7 @@ void zend_dump_op_array(const zend_op_array *op_array, uint32_t dump_flags, cons
11381077
fprintf(stderr, "LIVE RANGES:\n");
11391078
for (i = 0; i < op_array->last_live_range; i++) {
11401079
fprintf(stderr,
1141-
(dump_flags & ZEND_DUMP_NUMERIC_OPLINES) ?
1142-
" %u: %04u - %04u " :
1143-
" %u: L%u - L%u ",
1080+
" %u: %04u - %04u ",
11441081
EX_VAR_TO_NUM(op_array->live_range[i].var & ~ZEND_LIVE_MASK),
11451082
op_array->live_range[i].start,
11461083
op_array->live_range[i].end);
@@ -1167,34 +1104,26 @@ void zend_dump_op_array(const zend_op_array *op_array, uint32_t dump_flags, cons
11671104
fprintf(stderr, "EXCEPTION TABLE:\n");
11681105
for (i = 0; i < op_array->last_try_catch; i++) {
11691106
fprintf(stderr,
1170-
(dump_flags & ZEND_DUMP_NUMERIC_OPLINES) ?
1171-
" %04u" :
1172-
" L%u",
1107+
" %04u",
11731108
op_array->try_catch_array[i].try_op);
11741109

11751110
if (op_array->try_catch_array[i].catch_op) {
11761111
fprintf(stderr,
1177-
(dump_flags & ZEND_DUMP_NUMERIC_OPLINES) ?
1178-
", %04u" :
1179-
", L%u",
1112+
", %04u",
11801113
op_array->try_catch_array[i].catch_op);
11811114
} else {
11821115
fprintf(stderr, ", -");
11831116
}
11841117
if (op_array->try_catch_array[i].finally_op) {
11851118
fprintf(stderr,
1186-
(dump_flags & ZEND_DUMP_NUMERIC_OPLINES) ?
1187-
", %04u" :
1188-
", L%u",
1119+
", %04u",
11891120
op_array->try_catch_array[i].finally_op);
11901121
} else {
11911122
fprintf(stderr, ", -");
11921123
}
11931124
if (op_array->try_catch_array[i].finally_end) {
11941125
fprintf(stderr,
1195-
(dump_flags & ZEND_DUMP_NUMERIC_OPLINES) ?
1196-
", %04u" :
1197-
", L%u\n",
1126+
", %04u",
11981127
op_array->try_catch_array[i].finally_end);
11991128
} else {
12001129
fprintf(stderr, ", -\n");

ext/opcache/Optimizer/zend_dump.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@
2727
#define ZEND_DUMP_CFG (1<<2)
2828
#define ZEND_DUMP_SSA (1<<3)
2929
#define ZEND_DUMP_LIVE_RANGES (1<<4)
30-
#define ZEND_DUMP_NUMERIC_OPLINES (1<<5)
3130

3231
BEGIN_EXTERN_C()
3332

ext/opcache/jit/zend_jit.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3066,7 +3066,7 @@ static int zend_real_jit_func(zend_op_array *op_array, zend_script *script, cons
30663066
}
30673067

30683068
if (ZCG(accel_directives).jit_debug & ZEND_JIT_DEBUG_SSA) {
3069-
zend_dump_op_array(op_array, ZEND_DUMP_NUMERIC_OPLINES|ZEND_DUMP_HIDE_UNREACHABLE|ZEND_DUMP_RC_INFERENCE|ZEND_DUMP_SSA, "JIT", &ssa);
3069+
zend_dump_op_array(op_array, ZEND_DUMP_HIDE_UNREACHABLE|ZEND_DUMP_RC_INFERENCE|ZEND_DUMP_SSA, "JIT", &ssa);
30703070
}
30713071

30723072
if (zend_jit(op_array, &ssa, rt_opline) != SUCCESS) {
@@ -3380,7 +3380,7 @@ ZEND_EXT_API int zend_jit_script(zend_script *script)
33803380
}
33813381
info = ZEND_FUNC_INFO(call_graph.op_arrays[i]);
33823382
if (info) {
3383-
zend_dump_op_array(call_graph.op_arrays[i], ZEND_DUMP_NUMERIC_OPLINES|ZEND_DUMP_HIDE_UNREACHABLE|ZEND_DUMP_RC_INFERENCE|ZEND_DUMP_SSA, "JIT", &info->ssa);
3383+
zend_dump_op_array(call_graph.op_arrays[i], ZEND_DUMP_HIDE_UNREACHABLE|ZEND_DUMP_RC_INFERENCE|ZEND_DUMP_SSA, "JIT", &info->ssa);
33843384
}
33853385
}
33863386
}

ext/opcache/jit/zend_jit_trace.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -445,7 +445,7 @@ static zend_ssa *zend_jit_trace_build_ssa(const zend_op_array *op_array, zend_sc
445445
}
446446

447447
if (ZCG(accel_directives).jit_debug & ZEND_JIT_DEBUG_SSA) {
448-
zend_dump_op_array(op_array, ZEND_DUMP_NUMERIC_OPLINES|ZEND_DUMP_HIDE_UNREACHABLE|ZEND_DUMP_RC_INFERENCE|ZEND_DUMP_SSA, "JIT", ssa);
448+
zend_dump_op_array(op_array, ZEND_DUMP_HIDE_UNREACHABLE|ZEND_DUMP_RC_INFERENCE|ZEND_DUMP_SSA, "JIT", ssa);
449449
}
450450
return ssa;
451451
} while (0);
@@ -3360,7 +3360,7 @@ static void zend_jit_dump_trace(zend_jit_trace_rec *trace_buffer, zend_ssa *tssa
33603360
fprintf(stderr, "%04d%*c",
33613361
(int)(opline - op_array->opcodes),
33623362
level, ' ');
3363-
zend_dump_op(op_array, NULL, opline, ZEND_DUMP_NUMERIC_OPLINES|ZEND_DUMP_RC_INFERENCE, tssa, (tssa && tssa->ops) ? tssa->ops + idx : NULL);
3363+
zend_dump_op(op_array, NULL, opline, ZEND_DUMP_RC_INFERENCE, tssa, (tssa && tssa->ops) ? tssa->ops + idx : NULL);
33643364

33653365
op1_type = p->op1_type;
33663366
op2_type = p->op2_type;
@@ -3404,7 +3404,7 @@ static void zend_jit_dump_trace(zend_jit_trace_rec *trace_buffer, zend_ssa *tssa
34043404
fprintf(stderr, "%04d%*c;",
34053405
(int)(opline - op_array->opcodes),
34063406
level, ' ');
3407-
zend_dump_op(op_array, NULL, opline, ZEND_DUMP_NUMERIC_OPLINES|ZEND_DUMP_RC_INFERENCE, tssa, (tssa && tssa->ops) ? tssa->ops + idx : NULL);
3407+
zend_dump_op(op_array, NULL, opline, ZEND_DUMP_RC_INFERENCE, tssa, (tssa && tssa->ops) ? tssa->ops + idx : NULL);
34083408
idx++;
34093409
len--;
34103410
fprintf(stderr, "\n");

ext/opcache/tests/opt/coalesce.phpt

Lines changed: 17 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -22,19 +22,22 @@ function b() {
2222

2323
?>
2424
--EXPECTF--
25-
$_main: ; (lines=1, args=0, vars=0, tmps=0)
26-
; (after optimizer)
27-
; %s
28-
L0 (14): RETURN int(1)
25+
$_main:
26+
; (lines=1, args=0, vars=0, tmps=0)
27+
; (after optimizer)
28+
; %s
29+
0000 RETURN int(1)
2930

30-
a: ; (lines=2, args=0, vars=1, tmps=1)
31-
; (after optimizer)
32-
; %s
33-
L0 (4): T1 = COALESCE CV0($test) L1
34-
L1 (5): RETURN bool(true)
31+
a:
32+
; (lines=2, args=0, vars=1, tmps=1)
33+
; (after optimizer)
34+
; %s
35+
0000 T1 = COALESCE CV0($test) 0001
36+
0001 RETURN bool(true)
3537

36-
b: ; (lines=2, args=0, vars=1, tmps=1)
37-
; (after optimizer)
38-
; %s
39-
L0 (9): T1 = COALESCE CV0($test) L1
40-
L1 (10): RETURN bool(true)
38+
b:
39+
; (lines=2, args=0, vars=1, tmps=1)
40+
; (after optimizer)
41+
; %s
42+
0000 T1 = COALESCE CV0($test) 0001
43+
0001 RETURN bool(true)

ext/opcache/tests/opt/dce_001.phpt

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -17,16 +17,18 @@ function foo(string $s1, string $s2, string $s3, string $s4) {
1717
}
1818
?>
1919
--EXPECTF--
20-
$_main: ; (lines=1, args=0, vars=0, tmps=0)
21-
; (after optimizer)
22-
; %sdce_001.php:1-8
23-
L0 (8): RETURN int(1)
20+
$_main:
21+
; (lines=1, args=0, vars=0, tmps=0)
22+
; (after optimizer)
23+
; %sdce_001.php:1-8
24+
0000 RETURN int(1)
2425

25-
foo: ; (lines=5, args=4, vars=4, tmps=0)
26-
; (after optimizer)
27-
; %sdce_001.php:2-6
28-
L0 (2): CV0($s1) = RECV 1
29-
L1 (2): CV1($s2) = RECV 2
30-
L2 (2): CV2($s3) = RECV 3
31-
L3 (2): CV3($s4) = RECV 4
32-
L4 (5): RETURN int(0)
26+
foo:
27+
; (lines=5, args=4, vars=4, tmps=0)
28+
; (after optimizer)
29+
; %sdce_001.php:2-6
30+
0000 CV0($s1) = RECV 1
31+
0001 CV1($s2) = RECV 2
32+
0002 CV2($s3) = RECV 3
33+
0003 CV3($s4) = RECV 4
34+
0004 RETURN int(0)

0 commit comments

Comments
 (0)