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 10:27:26-07:00
log10b1001a124101ea06e1f3027edde51b165ff21f
treebd8f514832e931c64c3a41da3c76e02853253960
parenteaa1db20025d7ad7e67cc410372e8380e889580b

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");