aboutsummaryrefslogtreecommitdiff
path: root/src/Compilation.zig
diff options
context:
space:
mode:
authorwooster0 <wooster0@proton.me>2024-12-19 23:42:59 +0900
committerAlex Rønne Petersen <alex@alexrp.com>2024-12-19 20:12:34 +0100
commit0ff0bdb4a71d8fd055272abfdadea2f23f99574a (patch)
tree264695e89691b93355dd795ce9fc060521966e23 /src/Compilation.zig
parente2e3633612be656177512873a9de6524082d04dd (diff)
downloadzig-0ff0bdb4a71d8fd055272abfdadea2f23f99574a.tar.gz
zig-0ff0bdb4a71d8fd055272abfdadea2f23f99574a.zip
Module: keep frame pointer in ReleaseSmall on x86
On x86 and x86_64 keeping the frame pointer usually reduces binary size, even for simple programs: ``` ~$ cat x.zig pub fn main() void { @import("std").debug.print("hello", .{}); } ~$ zig build-exe x.zig -target x86_64-linux -OReleaseSmall -fno-omit-frame-pointer && wc -c x 5168 x ~$ zig build-exe x.zig -target x86_64-linux -OReleaseSmall -fomit-frame-pointer && wc -c x 5216 x ``` ``` ~$ cat x.zig pub fn main() void { @import("std").debug.print("hello", .{}); } ~$ zig build-exe x.zig -target x86-linux -OReleaseSmall -fno-omit-frame-pointer && wc -c x 3400 x ~$ zig build-exe x.zig -target x86-linux -OReleaseSmall -fomit-frame-pointer && wc -c x 3556 x ``` A bigger benchmark is the Zig compiler: With no changes to anything on master branch: ``` $ zig build -Dno-lib -Dno-langref --zig-lib-dir lib -Doptimize=ReleaseSmall $ wc -c zig-out/bin/zig 10698792 zig-out/bin/zig ``` Adding `.omit_frame_pointer = false` in `addCompilerStep` in `build.zig`: ``` $ zig build -Dno-lib -Dno-langref --zig-lib-dir lib -Doptimize=ReleaseSmall $ wc -c zig-out/bin/zig 10155744 zig-out/bin/zig ```
Diffstat (limited to 'src/Compilation.zig')
0 files changed, 0 insertions, 0 deletions