From e7153e8a2f5ea6e2b2d2b5afe558deebf518f04a Mon Sep 17 00:00:00 2001 From: Nikita Popov Date: Thu, 25 Oct 2018 16:18:10 +0200 Subject: [PATCH] Improve "narrowing" error message By including the opcode name. --- ext/opcache/Optimizer/zend_inference.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/ext/opcache/Optimizer/zend_inference.c b/ext/opcache/Optimizer/zend_inference.c index 89bd75c1ed7..6aa823fdd2f 100644 --- a/ext/opcache/Optimizer/zend_inference.c +++ b/ext/opcache/Optimizer/zend_inference.c @@ -1927,7 +1927,10 @@ static void handle_type_narrowing(const zend_op_array *op_array, zend_ssa *ssa, { if (1) { /* Right now, this is always a bug */ - zend_error(E_WARNING, "Narrowing occurred during type inference. Please file a bug report on bugs.php.net"); + int def_op_num = ssa->vars[var].definition; + const zend_op *def_opline = def_op_num >= 0 ? &op_array->opcodes[def_op_num] : NULL; + const char *def_op_name = def_opline ? zend_get_opcode_name(def_opline->opcode) : "PHI"; + zend_error(E_WARNING, "Narrowing occurred during type inference of %s. Please file a bug report on bugs.php.net", def_op_name); } else { /* if new_type set resets some bits from old_type set * We have completely recalculate types of some dependent SSA variables