| author | |
| committer | |
| log | ea3f5905f0635d0c0cb3983ba5ca6c92859e9d81 |
| tree | 8a6005d4eea0b538141a7620236debfcf914b709 |
| parent | 9416b4d993e5e386c9208e9a52e4e881eee8cf72 |
Closes ziglang/zig#115856 files changed, 13 insertions(+), 0 deletions(-)
lib/std/builtin.zig+1| ... | ... | @@ -147,6 +147,7 @@ pub const CallingConvention = enum { |
| 147 | 147 | AAPCS, |
| 148 | 148 | AAPCSVFP, |
| 149 | 149 | SysV, |
| 150 | Win64, | |
| 150 | 151 | PtxKernel, |
| 151 | 152 | }; |
| 152 | 153 |
src/codegen/llvm.zig+1| ... | ... | @@ -7940,6 +7940,7 @@ fn toLlvmCallConv(cc: std.builtin.CallingConvention, target: std.Target) llvm.Ca |
| 7940 | 7940 | }, |
| 7941 | 7941 | .Signal => .AVR_SIGNAL, |
| 7942 | 7942 | .SysV => .X86_64_SysV, |
| 7943 | .Win64 => .Win64, | |
| 7943 | 7944 | .PtxKernel => return switch (target.cpu.arch) { |
| 7944 | 7945 | .nvptx, .nvptx64 => .PTX_Kernel, |
| 7945 | 7946 | else => unreachable, |
src/stage1/all_types.hpp+1| ... | ... | @@ -84,6 +84,7 @@ enum CallingConvention { |
| 84 | 84 | CallingConventionAAPCS, |
| 85 | 85 | CallingConventionAAPCSVFP, |
| 86 | 86 | CallingConventionSysV, |
| 87 | CallingConventionWin64, | |
| 87 | 88 | CallingConventionPtxKernel |
| 88 | 89 | }; |
| 89 | 90 |
src/stage1/analyze.cpp+4| ... | ... | @@ -991,6 +991,7 @@ const char *calling_convention_name(CallingConvention cc) { |
| 991 | 991 | case CallingConventionAAPCSVFP: return "AAPCSVFP"; |
| 992 | 992 | case CallingConventionInline: return "Inline"; |
| 993 | 993 | case CallingConventionSysV: return "SysV"; |
| 994 | case CallingConventionWin64: return "Win64"; | |
| 994 | 995 | case CallingConventionPtxKernel: return "PtxKernel"; |
| 995 | 996 | } |
| 996 | 997 | zig_unreachable(); |
| ... | ... | @@ -1015,6 +1016,7 @@ bool calling_convention_allows_zig_types(CallingConvention cc) { |
| 1015 | 1016 | case CallingConventionAAPCS: |
| 1016 | 1017 | case CallingConventionAAPCSVFP: |
| 1017 | 1018 | case CallingConventionSysV: |
| 1019 | case CallingConventionWin64: | |
| 1018 | 1020 | return false; |
| 1019 | 1021 | } |
| 1020 | 1022 | zig_unreachable(); |
| ... | ... | @@ -2006,6 +2008,7 @@ Error emit_error_unless_callconv_allowed_for_target(CodeGen *g, AstNode *source_ |
| 2006 | 2008 | allowed_platforms = "ARM"; |
| 2007 | 2009 | break; |
| 2008 | 2010 | case CallingConventionSysV: |
| 2011 | case CallingConventionWin64: | |
| 2009 | 2012 | if (g->zig_target->arch != ZigLLVM_x86_64) |
| 2010 | 2013 | allowed_platforms = "x86_64"; |
| 2011 | 2014 | break; |
| ... | ... | @@ -3846,6 +3849,7 @@ static void resolve_decl_fn(CodeGen *g, TldFn *tld_fn) { |
| 3846 | 3849 | case CallingConventionAAPCS: |
| 3847 | 3850 | case CallingConventionAAPCSVFP: |
| 3848 | 3851 | case CallingConventionSysV: |
| 3852 | case CallingConventionWin64: | |
| 3849 | 3853 | case CallingConventionPtxKernel: |
| 3850 | 3854 | add_fn_export(g, fn_table_entry, buf_ptr(&fn_table_entry->symbol_name), |
| 3851 | 3855 | GlobalLinkageIdStrong, fn_cc); |
src/stage1/codegen.cpp+5| ... | ... | @@ -209,6 +209,9 @@ static ZigLLVM_CallingConv get_llvm_cc(CodeGen *g, CallingConvention cc) { |
| 209 | 209 | case CallingConventionSysV: |
| 210 | 210 | assert(g->zig_target->arch == ZigLLVM_x86_64); |
| 211 | 211 | return ZigLLVM_X86_64_SysV; |
| 212 | case CallingConventionWin64: | |
| 213 | assert(g->zig_target->arch == ZigLLVM_x86_64); | |
| 214 | return ZigLLVM_Win64; | |
| 212 | 215 | case CallingConventionPtxKernel: |
| 213 | 216 | assert(g->zig_target->arch == ZigLLVM_nvptx || |
| 214 | 217 | g->zig_target->arch == ZigLLVM_nvptx64); |
| ... | ... | @@ -359,6 +362,7 @@ static bool cc_want_sret_attr(CallingConvention cc) { |
| 359 | 362 | case CallingConventionAAPCS: |
| 360 | 363 | case CallingConventionAAPCSVFP: |
| 361 | 364 | case CallingConventionSysV: |
| 365 | case CallingConventionWin64: | |
| 362 | 366 | case CallingConventionPtxKernel: |
| 363 | 367 | return true; |
| 364 | 368 | case CallingConventionAsync: |
| ... | ... | @@ -10033,6 +10037,7 @@ Buf *codegen_generate_builtin_source(CodeGen *g) { |
| 10033 | 10037 | static_assert(CallingConventionAAPCS == 12, ""); |
| 10034 | 10038 | static_assert(CallingConventionAAPCSVFP == 13, ""); |
| 10035 | 10039 | static_assert(CallingConventionSysV == 14, ""); |
| 10040 | static_assert(CallingConventionWin64 == 15, ""); | |
| 10036 | 10041 | |
| 10037 | 10042 | static_assert(BuiltinPtrSizeOne == 0, ""); |
| 10038 | 10043 | static_assert(BuiltinPtrSizeMany == 1, ""); |
src/stage1/ir.cpp+1| ... | ... | @@ -11743,6 +11743,7 @@ static Stage1AirInst *ir_analyze_instruction_export(IrAnalyze *ira, Stage1ZirIns |
| 11743 | 11743 | case CallingConventionAAPCS: |
| 11744 | 11744 | case CallingConventionAAPCSVFP: |
| 11745 | 11745 | case CallingConventionSysV: |
| 11746 | case CallingConventionWin64: | |
| 11746 | 11747 | case CallingConventionPtxKernel: |
| 11747 | 11748 | add_fn_export(ira->codegen, fn_entry, buf_ptr(symbol_name), global_linkage_id, cc); |
| 11748 | 11749 | fn_entry->section_name = section_name; |