From 6b9dc82fa596ac2470810bfda53d61e2add93d33 Mon Sep 17 00:00:00 2001 From: Tadeo Kondrak Date: Wed, 7 Oct 2020 17:38:42 -0600 Subject: stage1: Compile error instead of falling back to C for unsupported cc --- src/stage1/codegen.cpp | 40 +++++++++++++++++----------------------- 1 file changed, 17 insertions(+), 23 deletions(-) (limited to 'src/stage1/codegen.cpp') diff --git a/src/stage1/codegen.cpp b/src/stage1/codegen.cpp index 9474b4fa56..4a999b33ca 100644 --- a/src/stage1/codegen.cpp +++ b/src/stage1/codegen.cpp @@ -155,6 +155,7 @@ static const char *get_mangled_name(CodeGen *g, const char *original_name) { } } +// Sync this with emit_error_unless_callconv_allowed_for_target in analyze.cpp static ZigLLVM_CallingConv get_llvm_cc(CodeGen *g, CallingConvention cc) { switch (cc) { case CallingConventionUnspecified: @@ -164,38 +165,32 @@ static ZigLLVM_CallingConv get_llvm_cc(CodeGen *g, CallingConvention cc) { case CallingConventionNaked: zig_unreachable(); case CallingConventionStdcall: - if (g->zig_target->arch == ZigLLVM_x86) - return ZigLLVM_X86_StdCall; - return ZigLLVM_C; + assert(g->zig_target->arch == ZigLLVM_x86); + return ZigLLVM_X86_StdCall; case CallingConventionFastcall: - if (g->zig_target->arch == ZigLLVM_x86) - return ZigLLVM_X86_FastCall; - return ZigLLVM_C; + assert(g->zig_target->arch == ZigLLVM_x86); + return ZigLLVM_X86_FastCall; case CallingConventionVectorcall: if (g->zig_target->arch == ZigLLVM_x86) return ZigLLVM_X86_VectorCall; if (target_is_arm(g->zig_target) && target_arch_pointer_bit_width(g->zig_target->arch) == 64) return ZigLLVM_AArch64_VectorCall; - return ZigLLVM_C; + zig_unreachable(); case CallingConventionThiscall: - if (g->zig_target->arch == ZigLLVM_x86) - return ZigLLVM_X86_ThisCall; - return ZigLLVM_C; + assert(g->zig_target->arch == ZigLLVM_x86); + return ZigLLVM_X86_ThisCall; case CallingConventionAsync: return ZigLLVM_Fast; case CallingConventionAPCS: - if (target_is_arm(g->zig_target)) - return ZigLLVM_ARM_APCS; - return ZigLLVM_C; + assert(target_is_arm(g->zig_target)); + return ZigLLVM_ARM_APCS; case CallingConventionAAPCS: - if (target_is_arm(g->zig_target)) - return ZigLLVM_ARM_AAPCS; - return ZigLLVM_C; + assert(target_is_arm(g->zig_target)); + return ZigLLVM_ARM_AAPCS; case CallingConventionAAPCSVFP: - if (target_is_arm(g->zig_target)) - return ZigLLVM_ARM_AAPCS_VFP; - return ZigLLVM_C; + assert(target_is_arm(g->zig_target)); + return ZigLLVM_ARM_AAPCS_VFP; case CallingConventionInterrupt: if (g->zig_target->arch == ZigLLVM_x86 || g->zig_target->arch == ZigLLVM_x86_64) @@ -204,11 +199,10 @@ static ZigLLVM_CallingConv get_llvm_cc(CodeGen *g, CallingConvention cc) { return ZigLLVM_AVR_INTR; if (g->zig_target->arch == ZigLLVM_msp430) return ZigLLVM_MSP430_INTR; - return ZigLLVM_C; + zig_unreachable(); case CallingConventionSignal: - if (g->zig_target->arch == ZigLLVM_avr) - return ZigLLVM_AVR_SIGNAL; - return ZigLLVM_C; + assert(g->zig_target->arch == ZigLLVM_avr); + return ZigLLVM_AVR_SIGNAL; } zig_unreachable(); } -- cgit v1.2.3