zig

fork of https://codeberg.org/ziglang/zig
Log | Files | Refs | README | LICENSE

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:
Msrc/stage1/codegen.cpp | 6++++++
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");