| ... | @@ -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 | } |
| 365 | | 365 | |
| 366 | static bool codegen_have_frame_pointer(CodeGen *g) { | | |
| 367 | return g->build_mode == BuildModeDebug; | | |
| 368 | } | | |
| 369 | | | |
| 370 | static void add_common_fn_attributes(CodeGen *g, LLVMValueRef llvm_fn) { | 366 | static 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 | } |
| 605 | | 601 | |
| 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 0 | 1219 | // 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 | } |
| 1229 | | 1225 | |
| ... | @@ -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 | } |
| 1305 | | 1301 | |
| ... | @@ -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 about | 1383 | // 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) { |
| 2389 | | 2385 | |
| 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 | } |
| 2395 | | 2391 | |
| ... | @@ -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 | } |
| 5450 | | 5446 | |