authorgravatar for thatlemon@gmail.comLemonBoy <thatlemon@gmail.com> 2020-11-12 09:27:29+01:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2020-11-13 12:25:13-05:00
logb52a28a8026d552e10cb18c3b7b1f7b10d23bf81
tree5ad7afe17edaee4c4db0af83a5620ff2f3b20007
parent51717314e4c955f696919aea6f17d758b4b6430f

stage1: Ask LLVM to produce compact code in ReleaseSize mode

Let's follow what Clang does for -Oz and apply the `minsize` and `optsize` attributes by default. Closes #7048 Supersedes #7077

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

src/stage1/codegen.cpp+6
...@@ -484,6 +484,12 @@ static LLVMValueRef make_fn_llvm_value(CodeGen *g, ZigFn *fn) {...@@ -484,6 +484,12 @@ static LLVMValueRef make_fn_llvm_value(CodeGen *g, ZigFn *fn) {
484 addLLVMFnAttrInt(llvm_fn, "alignstack", fn->alignstack_value);484 addLLVMFnAttrInt(llvm_fn, "alignstack", fn->alignstack_value);
485 }485 }
486486
487 if (g->build_mode == BuildModeSmallRelease) {
488 // Optimize for small code size.
489 addLLVMFnAttr(llvm_fn, "minsize");
490 addLLVMFnAttr(llvm_fn, "optsize");
491 }
492
487 addLLVMFnAttr(llvm_fn, "nounwind");493 addLLVMFnAttr(llvm_fn, "nounwind");
488 add_uwtable_attr(g, llvm_fn);494 add_uwtable_attr(g, llvm_fn);
489 addLLVMFnAttr(llvm_fn, "nobuiltin");495 addLLVMFnAttr(llvm_fn, "nobuiltin");