[PATCH] D142024: [clang] Optimize clang::Builtin::Info density

serge via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Wed Jan 18 07:54:32 PST 2023


serge-sans-paille created this revision.
Herald added subscribers: luke, kosarev, mattd, gchakrabarti, pmatos, asb, asavonic, frasercrmck, kerbowa, luismarques, apazos, sameer.abuasal, s.egerton, Jim, jocewei, PkmX, the_o, brucehoult, MartinMosbeck, rogfer01, atanasyan, edward-jones, zzheng, jrtc27, niosHD, sabuasal, simoncook, johnrusso, rbar, kbarton, jgravelle-google, sbc100, jvesely, nemanjai, sdardis, dschuff.
Herald added a project: All.
serge-sans-paille requested review of this revision.
Herald added subscribers: cfe-commits, pcwang-thead, MaskRay, aheejin, jholewinski.
Herald added a project: clang.

Reorganize clang::Builtin::Info to have them naturally align on 4 bytes
boundaries.

Instead of storing builtin headers as a straight char pointer, enumerate
them and store the enum. It allows to use a small enum instead of a
pointer to reference them.

On a 64 bit machine, this brings sizeof(clang::Builtin::Info) from 56
down to 48 bytes.

On a release build on my Linux 64 bit machine, it shrinks the size of
libclang-cpp.so by 193kB.

The impact on performance is negligible in terms of instruction count,
but the wall time seems better, see
https://llvm-compile-time-tracker.com/compare.php?from=b3d8639f3536a4876b511aca9fb7948ff9266cee&to=a89b56423f98b550260a58c41e64aff9e56b76be&stat=task-clock


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D142024

Files:
  clang/include/clang/Basic/BuiltinHeaders.def
  clang/include/clang/Basic/Builtins.def
  clang/include/clang/Basic/Builtins.h
  clang/include/clang/Basic/BuiltinsAArch64.def
  clang/include/clang/Basic/BuiltinsARM.def
  clang/include/clang/Basic/BuiltinsX86.def
  clang/include/clang/Basic/BuiltinsX86_64.def
  clang/lib/Basic/Builtins.cpp
  clang/lib/Basic/Targets/AArch64.cpp
  clang/lib/Basic/Targets/AMDGPU.cpp
  clang/lib/Basic/Targets/ARM.cpp
  clang/lib/Basic/Targets/BPF.cpp
  clang/lib/Basic/Targets/Hexagon.cpp
  clang/lib/Basic/Targets/LoongArch.cpp
  clang/lib/Basic/Targets/Mips.cpp
  clang/lib/Basic/Targets/NVPTX.cpp
  clang/lib/Basic/Targets/PPC.cpp
  clang/lib/Basic/Targets/RISCV.cpp
  clang/lib/Basic/Targets/SystemZ.cpp
  clang/lib/Basic/Targets/VE.cpp
  clang/lib/Basic/Targets/WebAssembly.cpp
  clang/lib/Basic/Targets/X86.cpp
  clang/lib/Basic/Targets/XCore.cpp

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D142024.490164.patch
Type: text/x-patch
Size: 132287 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20230118/72c65a7a/attachment-0001.bin>


More information about the cfe-commits mailing list