Skip to content
Open
Show file tree
Hide file tree
Changes from 1 commit
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