From a2b0244652a32ba898523e6d6f7e4402e7e614d0 Mon Sep 17 00:00:00 2001 From: gingerBill Date: Sat, 22 Nov 2025 13:53:04 +0000 Subject: [PATCH] Only do the if-else chain for type switch on wasm targets --- src/llvm_backend_stmt.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/llvm_backend_stmt.cpp b/src/llvm_backend_stmt.cpp index 2a203efcd..c5c53956c 100644 --- a/src/llvm_backend_stmt.cpp +++ b/src/llvm_backend_stmt.cpp @@ -1982,11 +1982,13 @@ gb_internal void lb_build_type_switch_stmt(lbProcedure *p, AstTypeSwitchStmt *ss if (type_size_of(parent_base_type) == 0) { GB_ASSERT(tag.value == nullptr); switch_instr = LLVMBuildSwitch(p->builder, lb_const_bool(p->module, t_llvm_bool, false).value, else_block->block, cast(unsigned)num_cases); - } else if (switch_kind == TypeSwitch_Union) { + } else { GB_ASSERT(tag.value != nullptr); - switch_instr = LLVMBuildSwitch(p->builder, tag.value, else_block->block, cast(unsigned)num_cases); - } else if (switch_kind == TypeSwitch_Any) { - // gb_printf_err("HERE!\n"); + if (switch_kind == TypeSwitch_Any && is_arch_wasm()) { + // Only do the if-else chain on wasm targets + } else { + switch_instr = LLVMBuildSwitch(p->builder, tag.value, else_block->block, cast(unsigned)num_cases); + } } bool all_by_reference = false;