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
This commit is contained in:
LemonBoy 2020-11-12 09:27:29 +01:00 committed by Andrew Kelley
parent 51717314e4
commit b52a28a802

View File

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