Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions UPGRADING.INTERNALS
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,8 @@ PHP 8.6 INTERNALS UPGRADE NOTES
. The misnamed ZVAL_IS_NULL() has been removed. Use Z_ISNULL() instead.
. New zend_class_entry.ce_flags2 and zend_function.fn_flags2 fields were
added, given the primary flags were running out of bits.
. The EMPTY_SWITCH_DEFAULT_CASE() macro has been removed. Use
`default: ZEND_UNREACHABLE();` instead.

========================
2. Build system changes
Expand Down
2 changes: 1 addition & 1 deletion Zend/Optimizer/sccp.c
Original file line number Diff line number Diff line change
Expand Up @@ -1592,7 +1592,7 @@ static void sccp_visit_instr(scdf_ctx *scdf, zend_op *opline, zend_ssa_op *ssa_o
case ZEND_SHORT_CIRCUITING_CHAIN_EMPTY:
ZVAL_TRUE(&zv);
break;
EMPTY_SWITCH_DEFAULT_CASE()
default: ZEND_UNREACHABLE();
}
SET_RESULT(result, &zv);
break;
Expand Down
10 changes: 5 additions & 5 deletions Zend/Optimizer/zend_inference.c
Original file line number Diff line number Diff line change
Expand Up @@ -1063,7 +1063,7 @@ static bool zend_inference_calc_binary_op_range(
case ZEND_BW_XOR:
// TODO
break;
EMPTY_SWITCH_DEFAULT_CASE()
default: ZEND_UNREACHABLE();
}
return 0;
}
Expand Down Expand Up @@ -2351,7 +2351,7 @@ static uint32_t binary_op_result_type(
/* TODO: +MAY_BE_OBJECT ??? */
tmp = MAY_BE_STRING | MAY_BE_RC1 | MAY_BE_RCN;
break;
EMPTY_SWITCH_DEFAULT_CASE()
default: ZEND_UNREACHABLE();
}
return tmp;
}
Expand Down Expand Up @@ -3709,7 +3709,7 @@ static zend_always_inline zend_result _zend_update_type_info(
case ZEND_FREE:
/* This may happen if the using opcode is DCEd. */
break;
EMPTY_SWITCH_DEFAULT_CASE()
default: ZEND_UNREACHABLE();
}
j = zend_ssa_next_use(ssa->ops, ssa_op->result_def, j);
if (j >= 0) {
Expand Down Expand Up @@ -5296,10 +5296,10 @@ ZEND_API bool zend_may_throw_ex(const zend_op *opline, const zend_ssa_op *ssa_op
return (t1 & MAY_BE_OBJECT);
case IS_OBJECT:
return 0;
EMPTY_SWITCH_DEFAULT_CASE()
default: ZEND_UNREACHABLE();
}
/* GCC is getting confused here for the Wimplicit-fallthrough warning with
* EMPTY_SWITCH_DEFAULT_CASE() macro */
* default: ZEND_UNREACHABLE(); macro */
return 0;
case ZEND_ARRAY_KEY_EXISTS:
if ((t2 & MAY_BE_ANY) != MAY_BE_ARRAY) {
Expand Down
4 changes: 2 additions & 2 deletions Zend/zend_API.c
Original file line number Diff line number Diff line change
Expand Up @@ -147,7 +147,7 @@ ZEND_API const char *zend_get_type_by_const(int type) /* {{{ */
return "mixed";
case _IS_NUMBER:
return "int|float";
EMPTY_SWITCH_DEFAULT_CASE()
default: ZEND_UNREACHABLE();
}
}
/* }}} */
Expand Down Expand Up @@ -283,7 +283,7 @@ ZEND_API ZEND_COLD void ZEND_FASTCALL zend_wrong_parameter_error(int error_code,
case ZPP_ERROR_FAILURE:
ZEND_ASSERT(EG(exception) && "Should have produced an error already");
break;
EMPTY_SWITCH_DEFAULT_CASE()
default: ZEND_UNREACHABLE();
}
}
/* }}} */
Expand Down
24 changes: 12 additions & 12 deletions Zend/zend_ast.c
Original file line number Diff line number Diff line change
Expand Up @@ -731,7 +731,7 @@ static zend_result ZEND_FASTCALL zend_ast_evaluate_inner(
case IS_OBJECT:
zend_cast_zval_to_object(result, &op1, IS_VAR);
break;
EMPTY_SWITCH_DEFAULT_CASE();
default: ZEND_UNREACHABLE();
}
zval_ptr_dtor_nogc(&op1);
if (UNEXPECTED(EG(exception))) {
Expand Down Expand Up @@ -1852,7 +1852,7 @@ static ZEND_COLD void zend_ast_export_zval(smart_str *str, const zval *zv, int p
case IS_CONSTANT_AST:
zend_ast_export_ex(str, Z_ASTVAL_P(zv), priority, indent);
break;
EMPTY_SWITCH_DEFAULT_CASE();
default: ZEND_UNREACHABLE();
}
}

Expand Down Expand Up @@ -2287,7 +2287,7 @@ static ZEND_COLD void zend_ast_export_ex(smart_str *str, zend_ast *ast, int prio
case T_PROPERTY_C: APPEND_STR("__PROPERTY__");
case T_NS_C: APPEND_STR("__NAMESPACE__");
case T_CLASS_C: APPEND_STR("__CLASS__");
EMPTY_SWITCH_DEFAULT_CASE();
default: ZEND_UNREACHABLE();
}
break;
case ZEND_AST_TYPE:
Expand All @@ -2296,7 +2296,7 @@ static ZEND_COLD void zend_ast_export_ex(smart_str *str, zend_ast *ast, int prio
case IS_CALLABLE: APPEND_STR("callable");
case IS_STATIC: APPEND_STR("static");
case IS_MIXED: APPEND_STR("mixed");
EMPTY_SWITCH_DEFAULT_CASE();
default: ZEND_UNREACHABLE();
}
break;

Expand All @@ -2323,7 +2323,7 @@ static ZEND_COLD void zend_ast_export_ex(smart_str *str, zend_ast *ast, int prio
case IS_STRING: PREFIX_OP("(string)", 240, 241);
case IS_ARRAY: PREFIX_OP("(array)", 240, 241);
case IS_OBJECT: PREFIX_OP("(object)", 240, 241);
EMPTY_SWITCH_DEFAULT_CASE();
default: ZEND_UNREACHABLE();
}
break;
case ZEND_AST_CAST_VOID:
Expand Down Expand Up @@ -2357,14 +2357,14 @@ static ZEND_COLD void zend_ast_export_ex(smart_str *str, zend_ast *ast, int prio
case ZEND_REQUIRE_ONCE: FUNC_OP("require_once");
case ZEND_REQUIRE: FUNC_OP("require");
case ZEND_EVAL: FUNC_OP("eval");
EMPTY_SWITCH_DEFAULT_CASE();
default: ZEND_UNREACHABLE();
}
break;
case ZEND_AST_UNARY_OP:
switch (ast->attr) {
case ZEND_BW_NOT: PREFIX_OP("~", 240, 241);
case ZEND_BOOL_NOT: PREFIX_OP("!", 240, 241);
EMPTY_SWITCH_DEFAULT_CASE();
default: ZEND_UNREACHABLE();
}
break;
case ZEND_AST_PRE_INC:
Expand Down Expand Up @@ -2463,7 +2463,7 @@ static ZEND_COLD void zend_ast_export_ex(smart_str *str, zend_ast *ast, int prio
case ZEND_FETCH_CLASS_PARENT:
smart_str_append(str, ZSTR_KNOWN(ZEND_STR_PARENT));
break;
EMPTY_SWITCH_DEFAULT_CASE()
default: ZEND_UNREACHABLE();
}
} else {
zend_ast_export_ns_name(str, ast->child[0], 0, indent);
Expand All @@ -2486,7 +2486,7 @@ static ZEND_COLD void zend_ast_export_ex(smart_str *str, zend_ast *ast, int prio
case ZEND_BW_AND: BINARY_OP(" &= ", 90, 91, 90);
case ZEND_BW_XOR: BINARY_OP(" ^= ", 90, 91, 90);
case ZEND_POW: BINARY_OP(" **= ", 90, 91, 90);
EMPTY_SWITCH_DEFAULT_CASE();
default: ZEND_UNREACHABLE();
}
break;
case ZEND_AST_ASSIGN_COALESCE: BINARY_OP(" \?\?= ", 90, 91, 90);
Expand All @@ -2512,7 +2512,7 @@ static ZEND_COLD void zend_ast_export_ex(smart_str *str, zend_ast *ast, int prio
case ZEND_POW: BINARY_OP(" ** ", 250, 251, 250);
case ZEND_BOOL_XOR: BINARY_OP(" xor ", 40, 40, 41);
case ZEND_SPACESHIP: BINARY_OP(" <=> ", 180, 181, 181);
EMPTY_SWITCH_DEFAULT_CASE();
default: ZEND_UNREACHABLE();
}
break;
case ZEND_AST_GREATER: BINARY_OP(" > ", 180, 181, 181);
Expand Down Expand Up @@ -2864,7 +2864,7 @@ static ZEND_COLD void zend_ast_export_ex(smart_str *str, zend_ast *ast, int prio
zend_ast_export_indent(str, indent);
smart_str_appendc(str, '}');
break;
EMPTY_SWITCH_DEFAULT_CASE();
default: ZEND_UNREACHABLE();
}
return;

Expand Down Expand Up @@ -2961,7 +2961,7 @@ zend_ast * ZEND_FASTCALL zend_ast_with_attributes(zend_ast *ast, zend_ast *attr)
* zend_compile_const_decl() checks the kind of the list elements. */
ast = zend_ast_list_add(ast, attr);
break;
EMPTY_SWITCH_DEFAULT_CASE()
default: ZEND_UNREACHABLE();
}

return ast;
Expand Down
36 changes: 18 additions & 18 deletions Zend/zend_compile.c
Original file line number Diff line number Diff line change
Expand Up @@ -872,7 +872,7 @@ static const char *zend_modifier_token_to_string(uint32_t token)
return "protected(set)";
case T_PRIVATE_SET:
return "private(set)";
EMPTY_SWITCH_DEFAULT_CASE()
default: ZEND_UNREACHABLE();
}
}

Expand Down Expand Up @@ -1818,7 +1818,7 @@ static bool zend_try_compile_const_expr_resolve_class_name(zval *zv, zend_ast *c
case ZEND_FETCH_CLASS_DEFAULT:
ZVAL_STR(zv, zend_resolve_class_name_ast(class_ast));
return 1;
EMPTY_SWITCH_DEFAULT_CASE()
default: ZEND_UNREACHABLE();
}
}
/* }}} */
Expand Down Expand Up @@ -2262,7 +2262,7 @@ static void zend_adjust_for_fetch_type(zend_op *opline, znode *result, uint32_t
case BP_VAR_UNSET:
opline->opcode += 5 * factor;
return;
EMPTY_SWITCH_DEFAULT_CASE()
default: ZEND_UNREACHABLE();
}
}
/* }}} */
Expand Down Expand Up @@ -2425,7 +2425,7 @@ static inline void zend_update_jump_target(uint32_t opnum_jump, uint32_t opnum_t
case ZEND_JMP_FRAMELESS:
opline->op2.opline_num = opnum_target;
break;
EMPTY_SWITCH_DEFAULT_CASE()
default: ZEND_UNREACHABLE();
}
}
/* }}} */
Expand Down Expand Up @@ -3539,7 +3539,7 @@ static void zend_compile_assign(znode *result, zend_ast *ast) /* {{{ */

zend_compile_list_assign(result, var_ast, &expr_node, var_ast->attr);
return;
EMPTY_SWITCH_DEFAULT_CASE();
default: ZEND_UNREACHABLE();
}
}
/* }}} */
Expand Down Expand Up @@ -3683,7 +3683,7 @@ static void zend_compile_compound_assign(znode *result, zend_ast *ast) /* {{{ */
opline = zend_emit_op_data(&expr_node);
opline->extended_value = cache_slot;
return;
EMPTY_SWITCH_DEFAULT_CASE()
default: ZEND_UNREACHABLE();
}
}
/* }}} */
Expand Down Expand Up @@ -4925,7 +4925,7 @@ static zend_result zend_compile_func_sprintf(znode *result, zend_ast_list *args)
case 'd':
zend_emit_op_tmp(&elements[placeholder_count], ZEND_CAST, &elements[placeholder_count], NULL)->extended_value = IS_LONG;
break;
EMPTY_SWITCH_DEFAULT_CASE();
default: ZEND_UNREACHABLE();
}

if (rope_elements == 0) {
Expand Down Expand Up @@ -5077,7 +5077,7 @@ static const char *zend_get_cstring_from_property_hook_kind(zend_property_hook_k
return "get";
case ZEND_PROPERTY_HOOK_SET:
return "set";
EMPTY_SWITCH_DEFAULT_CASE()
default: ZEND_UNREACHABLE();
}
}

Expand Down Expand Up @@ -5597,7 +5597,7 @@ static void zend_compile_unset(zend_ast *ast) /* {{{ */
opline = zend_compile_static_prop(NULL, var_ast, BP_VAR_UNSET, false, false);
opline->opcode = ZEND_UNSET_STATIC_PROP;
return;
EMPTY_SWITCH_DEFAULT_CASE()
default: ZEND_UNREACHABLE();
}
}
/* }}} */
Expand Down Expand Up @@ -9168,7 +9168,7 @@ static void zend_compile_use_trait(zend_ast *ast) /* {{{ */
case ZEND_AST_TRAIT_ALIAS:
zend_compile_trait_alias(adaptation_ast);
break;
EMPTY_SWITCH_DEFAULT_CASE()
default: ZEND_UNREACHABLE();
}
}
}
Expand Down Expand Up @@ -9543,7 +9543,7 @@ static HashTable *zend_get_import_ht(uint32_t type) /* {{{ */
zend_hash_init(FC(imports_const), 8, NULL, str_dtor, 0);
}
return FC(imports_const);
EMPTY_SWITCH_DEFAULT_CASE()
default: ZEND_UNREACHABLE();
}

return NULL;
Expand All @@ -9559,7 +9559,7 @@ static char *zend_get_use_type_str(uint32_t type) /* {{{ */
return " function";
case ZEND_SYMBOL_CONST:
return " const";
EMPTY_SWITCH_DEFAULT_CASE()
default: ZEND_UNREACHABLE();
}

return " unknown";
Expand Down Expand Up @@ -9926,7 +9926,7 @@ static bool zend_try_ct_eval_magic_const(zval *zv, zend_ast *ast) /* {{{ */
ZVAL_EMPTY_STRING(zv);
}
break;
EMPTY_SWITCH_DEFAULT_CASE()
default: ZEND_UNREACHABLE();
}

return 1;
Expand Down Expand Up @@ -10670,7 +10670,7 @@ static void zend_compile_assign_coalesce(znode *result, zend_ast *ast) /* {{{ */
zend_emit_op_data(&default_node);
assign_node = var_node_w;
break;
EMPTY_SWITCH_DEFAULT_CASE();
default: ZEND_UNREACHABLE();
}

opline = zend_emit_op_tmp(NULL, ZEND_QM_ASSIGN, &assign_node, NULL);
Expand Down Expand Up @@ -10890,7 +10890,7 @@ static void zend_compile_isset_or_empty(znode *result, zend_ast *ast) /* {{{ */
opline = zend_compile_static_prop(result, var_ast, BP_VAR_IS, false, false);
opline->opcode = ZEND_ISSET_ISEMPTY_STATIC_PROP;
break;
EMPTY_SWITCH_DEFAULT_CASE()
default: ZEND_UNREACHABLE();
}

result->op_type = opline->result_type = IS_TMP_VAR;
Expand Down Expand Up @@ -11407,7 +11407,7 @@ static void zend_compile_const_expr_class_name(zend_ast **ast_ptr) /* {{{ */
zend_error_noreturn(E_COMPILE_ERROR,
"static::class cannot be used for compile-time class name resolution");
return;
EMPTY_SWITCH_DEFAULT_CASE()
default: ZEND_UNREACHABLE();
}
}

Expand Down Expand Up @@ -11510,7 +11510,7 @@ static void zend_compile_const_expr_fcc(zend_ast **ast_ptr)
case ZEND_AST_STATIC_CALL:
args_ast = &(*ast_ptr)->child[2];
break;
EMPTY_SWITCH_DEFAULT_CASE();
default: ZEND_UNREACHABLE();
}
if ((*args_ast)->kind != ZEND_AST_CALLABLE_CONVERT) {
zend_error_noreturn(E_COMPILE_ERROR, "Constant expression contains invalid operations");
Expand Down Expand Up @@ -11548,7 +11548,7 @@ static void zend_compile_const_expr_fcc(zend_ast **ast_ptr)
}
break;
}
EMPTY_SWITCH_DEFAULT_CASE();
default: ZEND_UNREACHABLE();
}
}

Expand Down
2 changes: 1 addition & 1 deletion Zend/zend_compile.h
Original file line number Diff line number Diff line change
Expand Up @@ -430,7 +430,7 @@ static zend_always_inline uint32_t zend_visibility_to_set_visibility(uint32_t vi
return ZEND_ACC_PROTECTED_SET;
case ZEND_ACC_PRIVATE:
return ZEND_ACC_PRIVATE_SET;
EMPTY_SWITCH_DEFAULT_CASE();
default: ZEND_UNREACHABLE();
}
}

Expand Down
10 changes: 5 additions & 5 deletions Zend/zend_execute.c
Original file line number Diff line number Diff line change
Expand Up @@ -1790,10 +1790,10 @@ ZEND_API ZEND_COLD void zend_wrong_string_offset_error(void)
case ZEND_FETCH_DIM_INCDEC:
msg = "Cannot increment/decrement string offsets";
break;
EMPTY_SWITCH_DEFAULT_CASE();
default: ZEND_UNREACHABLE();
}
break;
EMPTY_SWITCH_DEFAULT_CASE();
default: ZEND_UNREACHABLE();
}
ZEND_ASSERT(msg != NULL);
zend_throw_error(NULL, "%s", msg);
Expand Down Expand Up @@ -3502,7 +3502,7 @@ static zend_never_inline bool zend_handle_fetch_obj_flags(
ZEND_REF_ADD_TYPE_SOURCE(Z_REF_P(ptr), prop_info);
}
break;
EMPTY_SWITCH_DEFAULT_CASE()
default: ZEND_UNREACHABLE();
}
return 1;
}
Expand Down Expand Up @@ -4214,7 +4214,7 @@ static zend_never_inline void zend_fetch_this_var(int type OPLINE_DC EXECUTE_DAT
ZVAL_UNDEF(result);
zend_throw_error(NULL, "Cannot unset $this");
break;
EMPTY_SWITCH_DEFAULT_CASE()
default: ZEND_UNREACHABLE();
}
}

Expand Down Expand Up @@ -5355,7 +5355,7 @@ static zend_never_inline zend_op_array* ZEND_FASTCALL zend_include_or_eval(zval
efree(eval_desc);
}
break;
EMPTY_SWITCH_DEFAULT_CASE()
default: ZEND_UNREACHABLE();
}

zend_tmp_string_release(tmp_inc_filename);
Expand Down
Loading