]> granicus.if.org Git - llvm/commitdiff
Change the cap on the amount of padding for each vtable to 32-byte (previously it...
authorPeter Collingbourne <peter@pcc.me.uk>
Fri, 20 Jul 2018 21:43:20 +0000 (21:43 +0000)
committerPeter Collingbourne <peter@pcc.me.uk>
Fri, 20 Jul 2018 21:43:20 +0000 (21:43 +0000)
We tested different cap values with a recent commit of Chromium. Our results show that the 32-byte cap yields the smallest binary and all the caps yield similar performance.
Based on the results, we propose to change the cap value to 32-byte.

Patch by Zhaomo Yang!

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@337622 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Transforms/IPO/LowerTypeTests.cpp

index 367b6282e243fe2c870d7b144f361ed0bc81e3bb..4f75718847076effc78cf89a9ad2d48529a83901 100644 (file)
@@ -771,10 +771,12 @@ void LowerTypeTestsModule::buildBitSetsFromGlobalVariables(
     // Compute the amount of padding required.
     uint64_t Padding = NextPowerOf2(InitSize - 1) - InitSize;
 
-    // Cap at 128 was found experimentally to have a good data/instruction
-    // overhead tradeoff.
-    if (Padding > 128)
-      Padding = alignTo(InitSize, 128) - InitSize;
+    // Experiments of different caps with Chromium on both x64 and ARM64
+    // have shown that the 32-byte cap generates the smallest binary on
+    // both platforms while different caps yield similar performance.
+    // (see https://lists.llvm.org/pipermail/llvm-dev/2018-July/124694.html)
+    if (Padding > 32)
+      Padding = alignTo(InitSize, 32) - InitSize;
 
     GlobalInits.push_back(
         ConstantAggregateZero::get(ArrayType::get(Int8Ty, Padding)));