authorgravatar for leecannon@leecannon.xyzLee Cannon <leecannon@leecannon.xyz> 2021-09-30 19:50:18+01:00
committergravatar for leecannon@leecannon.xyzLee Cannon <leecannon@leecannon.xyz> 2021-10-16 21:55:51+01:00
log1e942211901f0c8bc2f857b48dc8254e57a00ef4
tree354bca26c7d01858c94fff89a07063b830abd617
parentb15d6b2a34294bd48bc090f858c1b9527763163a

stage1 codegen


1 files changed, 6 insertions(+), 10 deletions(-)

src/stage1/codegen.cpp+6-10
...@@ -363,10 +363,6 @@ static bool cc_want_sret_attr(CallingConvention cc) {...@@ -363,10 +363,6 @@ static bool cc_want_sret_attr(CallingConvention cc) {
363 zig_unreachable();363 zig_unreachable();
364}364}
365365
366static bool codegen_have_frame_pointer(CodeGen *g) {
367 return g->build_mode == BuildModeDebug;
368}
369
370static void add_common_fn_attributes(CodeGen *g, LLVMValueRef llvm_fn) {366static void add_common_fn_attributes(CodeGen *g, LLVMValueRef llvm_fn) {
371 if (!g->red_zone) {367 if (!g->red_zone) {
372 addLLVMFnAttr(llvm_fn, "noredzone");368 addLLVMFnAttr(llvm_fn, "noredzone");
...@@ -603,7 +599,7 @@ static LLVMValueRef make_fn_llvm_value(CodeGen *g, ZigFn *fn) {...@@ -603,7 +599,7 @@ static LLVMValueRef make_fn_llvm_value(CodeGen *g, ZigFn *fn) {
603 addLLVMFnAttrInt(llvm_fn, "alignstack", fn->alignstack_value);599 addLLVMFnAttrInt(llvm_fn, "alignstack", fn->alignstack_value);
604 }600 }
605601
606 if (codegen_have_frame_pointer(g) && cc != CallingConventionInline) {602 if (!g->omit_frame_pointer && cc != CallingConventionInline) {
607 ZigLLVMAddFunctionAttr(llvm_fn, "frame-pointer", "all");603 ZigLLVMAddFunctionAttr(llvm_fn, "frame-pointer", "all");
608 }604 }
609 if (fn->section_name) {605 if (fn->section_name) {
...@@ -1223,7 +1219,7 @@ static LLVMValueRef get_add_error_return_trace_addr_fn(CodeGen *g) {...@@ -1223,7 +1219,7 @@ static LLVMValueRef get_add_error_return_trace_addr_fn(CodeGen *g) {
1223 // Error return trace memory is in the stack, which is impossible to be at address 01219 // Error return trace memory is in the stack, which is impossible to be at address 0
1224 // on any architecture.1220 // on any architecture.
1225 addLLVMArgAttr(fn_val, (unsigned)0, "nonnull");1221 addLLVMArgAttr(fn_val, (unsigned)0, "nonnull");
1226 if (codegen_have_frame_pointer(g)) {1222 if (!g->omit_frame_pointer) {
1227 ZigLLVMAddFunctionAttr(fn_val, "frame-pointer", "all");1223 ZigLLVMAddFunctionAttr(fn_val, "frame-pointer", "all");
1228 }1224 }
12291225
...@@ -1299,7 +1295,7 @@ static LLVMValueRef get_return_err_fn(CodeGen *g) {...@@ -1299,7 +1295,7 @@ static LLVMValueRef get_return_err_fn(CodeGen *g) {
1299 LLVMSetLinkage(fn_val, LLVMInternalLinkage);1295 LLVMSetLinkage(fn_val, LLVMInternalLinkage);
1300 ZigLLVMFunctionSetCallingConv(fn_val, get_llvm_cc(g, CallingConventionUnspecified));1296 ZigLLVMFunctionSetCallingConv(fn_val, get_llvm_cc(g, CallingConventionUnspecified));
1301 add_common_fn_attributes(g, fn_val);1297 add_common_fn_attributes(g, fn_val);
1302 if (codegen_have_frame_pointer(g)) {1298 if (!g->omit_frame_pointer) {
1303 ZigLLVMAddFunctionAttr(fn_val, "frame-pointer", "all");1299 ZigLLVMAddFunctionAttr(fn_val, "frame-pointer", "all");
1304 }1300 }
13051301
...@@ -1381,7 +1377,7 @@ static LLVMValueRef get_safety_crash_err_fn(CodeGen *g) {...@@ -1381,7 +1377,7 @@ static LLVMValueRef get_safety_crash_err_fn(CodeGen *g) {
1381 LLVMSetLinkage(fn_val, LLVMInternalLinkage);1377 LLVMSetLinkage(fn_val, LLVMInternalLinkage);
1382 ZigLLVMFunctionSetCallingConv(fn_val, get_llvm_cc(g, CallingConventionUnspecified));1378 ZigLLVMFunctionSetCallingConv(fn_val, get_llvm_cc(g, CallingConventionUnspecified));
1383 add_common_fn_attributes(g, fn_val);1379 add_common_fn_attributes(g, fn_val);
1384 if (codegen_have_frame_pointer(g)) {1380 if (!g->omit_frame_pointer) {
1385 ZigLLVMAddFunctionAttr(fn_val, "frame-pointer", "all");1381 ZigLLVMAddFunctionAttr(fn_val, "frame-pointer", "all");
1386 }1382 }
1387 // Not setting alignment here. See the comment above about1383 // Not setting alignment here. See the comment above about
...@@ -2389,7 +2385,7 @@ static LLVMValueRef get_merge_err_ret_traces_fn_val(CodeGen *g) {...@@ -2389,7 +2385,7 @@ static LLVMValueRef get_merge_err_ret_traces_fn_val(CodeGen *g) {
23892385
2390 addLLVMArgAttr(fn_val, (unsigned)1, "noalias");2386 addLLVMArgAttr(fn_val, (unsigned)1, "noalias");
2391 addLLVMArgAttr(fn_val, (unsigned)1, "readonly");2387 addLLVMArgAttr(fn_val, (unsigned)1, "readonly");
2392 if (codegen_have_frame_pointer(g)) {2388 if (!g->omit_frame_pointer) {
2393 ZigLLVMAddFunctionAttr(fn_val, "frame-pointer", "all");2389 ZigLLVMAddFunctionAttr(fn_val, "frame-pointer", "all");
2394 }2390 }
23952391
...@@ -5444,7 +5440,7 @@ static LLVMValueRef get_enum_tag_name_function(CodeGen *g, ZigType *enum_type) {...@@ -5444,7 +5440,7 @@ static LLVMValueRef get_enum_tag_name_function(CodeGen *g, ZigType *enum_type) {
5444 LLVMSetLinkage(fn_val, LLVMInternalLinkage);5440 LLVMSetLinkage(fn_val, LLVMInternalLinkage);
5445 ZigLLVMFunctionSetCallingConv(fn_val, get_llvm_cc(g, CallingConventionUnspecified));5441 ZigLLVMFunctionSetCallingConv(fn_val, get_llvm_cc(g, CallingConventionUnspecified));
5446 add_common_fn_attributes(g, fn_val);5442 add_common_fn_attributes(g, fn_val);
5447 if (codegen_have_frame_pointer(g)) {5443 if (!g->omit_frame_pointer) {
5448 ZigLLVMAddFunctionAttr(fn_val, "frame-pointer", "all");5444 ZigLLVMAddFunctionAttr(fn_val, "frame-pointer", "all");
5449 }5445 }
54505446