summaryrefslogtreecommitdiffstats
path: root/contrib/llvm/patches/patch-10-llvm-r222562-loop-rotate.diff
blob: bc09f273bb1b911841615013b181c524fe7d7b7c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Pull in r222562 from upstream llvm trunk (by Roman Divacky):

  Disable header duplication at -Oz in loop-rotate pass.

This helps to minimize the size of boot2.

Introduced here: http://svnweb.freebsd.org/changeset/base/274968

Index: lib/Transforms/IPO/PassManagerBuilder.cpp
===================================================================
--- lib/Transforms/IPO/PassManagerBuilder.cpp
+++ lib/Transforms/IPO/PassManagerBuilder.cpp
@@ -195,7 +195,8 @@ void PassManagerBuilder::populateModulePassManager
     MPM.add(createTailCallEliminationPass()); // Eliminate tail calls
   MPM.add(createCFGSimplificationPass());     // Merge & remove BBs
   MPM.add(createReassociatePass());           // Reassociate expressions
-  MPM.add(createLoopRotatePass());            // Rotate Loop
+  // Rotate Loop - disable header duplication at -Oz
+  MPM.add(createLoopRotatePass(SizeLevel == 2 ? 0 : -1));
   MPM.add(createLICMPass());                  // Hoist loop invariants
   MPM.add(createLoopUnswitchPass(SizeLevel || OptLevel < 3));
   MPM.add(createInstructionCombiningPass());
OpenPOWER on IntegriCloud