]> granicus.if.org Git - php/commitdiff
Improve "narrowing" error message
authorNikita Popov <nikita.ppv@gmail.com>
Thu, 25 Oct 2018 14:18:10 +0000 (16:18 +0200)
committerNikita Popov <nikita.ppv@gmail.com>
Thu, 25 Oct 2018 14:36:23 +0000 (16:36 +0200)
By including the opcode name.

ext/opcache/Optimizer/zend_inference.c

index 89bd75c1ed7b7b7096a420fd04365ac9572f94b8..6aa823fdd2ff4ebcead639578fbf720ff1294a5c 100644 (file)
@@ -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