| ... | ... | @@ -363,10 +363,6 @@ static bool cc_want_sret_attr(CallingConvention cc) { |
| 363 | 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 | 366 | static void add_common_fn_attributes(CodeGen *g, LLVMValueRef llvm_fn) { |
| 371 | 367 | if (!g->red_zone) { |
| 372 | 368 | addLLVMFnAttr(llvm_fn, "noredzone"); |
| ... | ... | @@ -603,7 +599,7 @@ static LLVMValueRef make_fn_llvm_value(CodeGen *g, ZigFn *fn) { |
| 603 | 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 | 603 | ZigLLVMAddFunctionAttr(llvm_fn, "frame-pointer", "all"); |
| 608 | 604 | } |
| 609 | 605 | if (fn->section_name) { |
| ... | ... | @@ -1223,7 +1219,7 @@ static LLVMValueRef get_add_error_return_trace_addr_fn(CodeGen *g) { |
| 1223 | 1219 | // Error return trace memory is in the stack, which is impossible to be at address 0 |
| 1224 | 1220 | // on any architecture. |
| 1225 | 1221 | addLLVMArgAttr(fn_val, (unsigned)0, "nonnull"); |
| 1226 | | if (codegen_have_frame_pointer(g)) { |
| 1222 | if (!g->omit_frame_pointer) { |
| 1227 | 1223 | ZigLLVMAddFunctionAttr(fn_val, "frame-pointer", "all"); |
| 1228 | 1224 | } |
| 1229 | 1225 | |
| ... | ... | @@ -1299,7 +1295,7 @@ static LLVMValueRef get_return_err_fn(CodeGen *g) { |
| 1299 | 1295 | LLVMSetLinkage(fn_val, LLVMInternalLinkage); |
| 1300 | 1296 | ZigLLVMFunctionSetCallingConv(fn_val, get_llvm_cc(g, CallingConventionUnspecified)); |
| 1301 | 1297 | add_common_fn_attributes(g, fn_val); |
| 1302 | | if (codegen_have_frame_pointer(g)) { |
| 1298 | if (!g->omit_frame_pointer) { |
| 1303 | 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 | 1377 | LLVMSetLinkage(fn_val, LLVMInternalLinkage); |
| 1382 | 1378 | ZigLLVMFunctionSetCallingConv(fn_val, get_llvm_cc(g, CallingConventionUnspecified)); |
| 1383 | 1379 | add_common_fn_attributes(g, fn_val); |
| 1384 | | if (codegen_have_frame_pointer(g)) { |
| 1380 | if (!g->omit_frame_pointer) { |
| 1385 | 1381 | ZigLLVMAddFunctionAttr(fn_val, "frame-pointer", "all"); |
| 1386 | 1382 | } |
| 1387 | 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 | 2385 | |
| 2390 | 2386 | addLLVMArgAttr(fn_val, (unsigned)1, "noalias"); |
| 2391 | 2387 | addLLVMArgAttr(fn_val, (unsigned)1, "readonly"); |
| 2392 | | if (codegen_have_frame_pointer(g)) { |
| 2388 | if (!g->omit_frame_pointer) { |
| 2393 | 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 | 5440 | LLVMSetLinkage(fn_val, LLVMInternalLinkage); |
| 5445 | 5441 | ZigLLVMFunctionSetCallingConv(fn_val, get_llvm_cc(g, CallingConventionUnspecified)); |
| 5446 | 5442 | add_common_fn_attributes(g, fn_val); |
| 5447 | | if (codegen_have_frame_pointer(g)) { |
| 5443 | if (!g->omit_frame_pointer) { |
| 5448 | 5444 | ZigLLVMAddFunctionAttr(fn_val, "frame-pointer", "all"); |
| 5449 | 5445 | } |
| 5450 | 5446 | |