HomePhabricator

CodeGet: Init 32bit pointers with 0xFFFFFFFF

Description

CodeGet: Init 32bit pointers with 0xFFFFFFFF

Summary:
Patch makes D63967 effective for 32bit platforms and improves pattern
initialization there. It cuts size of 32bit binary compiled with
-ftrivial-auto-var-init=pattern by 2% (3% with -Os).

Binary size change on CTMark, (with -fuse-ld=lld -Wl,--icf=all, similar results with default linker options)

                   master           patch      diff
Os pattern   7.915580e+05    7.698424e+05 -0.028387
O3 pattern   9.953688e+05    9.752952e+05 -0.019325

Zero vs Pattern on master

               zero       pattern      diff
Os     7.689712e+05  7.915580e+05  0.031380
O3     9.744796e+05  9.953688e+05  0.021133

Zero vs Pattern with the patch

               zero       pattern      diff
Os     7.689712e+05  7.698424e+05  0.000789
O3     9.744796e+05  9.752952e+05  0.000742

Reviewers: pcc, eugenis, glider, jfb

Reviewed By: jfb

Subscribers: hubert.reinterpretcast, dexonsmith, cfe-commits

Tags: #clang

Differential Revision: https://reviews.llvm.org/D64597

Details

Committed
vitalybukaJul 12 2019, 10:21 AM
Reviewer
jfb
Differential Revision
D64597: CodeGet: Init 32bit pointers with 0xFFFFFFFF
Parents
rL365920: [IndVars] Use exit count reasoning to discharge obviously untaken exits
Branches
Unknown
Tags
Unknown