commit 10b1001a124101ea06e1f3027edde51b165ff21f (tree)
parent eaa1db20025d7ad7e67cc410372e8380e889580b
Author: LemonBoy <thatlemon@gmail.com>
Date: Thu, 12 Nov 2020 09:27:29 +0100
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
Diffstat:
1 file changed, 6 insertions(+), 0 deletions(-)
diff --git a/src/stage1/codegen.cpp b/src/stage1/codegen.cpp
@@ -484,6 +484,12 @@ static LLVMValueRef make_fn_llvm_value(CodeGen *g, ZigFn *fn) {
addLLVMFnAttrInt(llvm_fn, "alignstack", fn->alignstack_value);
}
+ if (g->build_mode == BuildModeSmallRelease) {
+ // Optimize for small code size.
+ addLLVMFnAttr(llvm_fn, "minsize");
+ addLLVMFnAttr(llvm_fn, "optsize");
+ }
+
addLLVMFnAttr(llvm_fn, "nounwind");
add_uwtable_attr(g, llvm_fn);
addLLVMFnAttr(llvm_fn, "nobuiltin");