LoopUnroll: Use the optsize threshold for minsize as well
authorJustin Bogner <mail@justinbogner.com>
Mon, 11 Jan 2016 22:39:43 +0000 (22:39 +0000)
committerJustin Bogner <mail@justinbogner.com>
Mon, 11 Jan 2016 22:39:43 +0000 (22:39 +0000)
Currently we're unrolling loops more in minsize than in optsize, which
means -Oz will have a larger code size than -Os. That doesn't make any
sense.

This resolves the FIXME about this in LoopUnrollPass and extends the
optsize test to make sure we use the smaller threshold for minsize as
well.

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

lib/Transforms/Scalar/LoopUnrollPass.cpp
test/Transforms/LoopUnroll/partial-unroll-optsize.ll

index 56ae5c0104118fdd2ed6aaec9626de03bd8a0ac7..bc0f1e9f400c984abbe0c54d9018a9c2c347f40b 100644 (file)
@@ -209,10 +209,7 @@ namespace {
                                        ? CurrentDynamicCostSavingsDiscount
                                        : UP.DynamicCostSavingsDiscount;
 
-      if (!UserThreshold &&
-          // FIXME: Use Function::optForSize().
-          L->getHeader()->getParent()->hasFnAttribute(
-              Attribute::OptimizeForSize)) {
+      if (!UserThreshold && L->getHeader()->getParent()->optForSize()) {
         Threshold = UP.OptSizeThreshold;
         PartialThreshold = UP.PartialOptSizeThreshold;
       }
index a650317f3df793f0b6a3ec79cf01b3dc154b572f..e5e0151761bf2140d521fd974096ba312f87f2b8 100644 (file)
@@ -1,4 +1,6 @@
 ; RUN: opt < %s -S -loop-unroll -unroll-allow-partial | FileCheck %s
+; RUN: sed -e 's/optsize/minsize/' %s | opt -S -loop-unroll -unroll-allow-partial | FileCheck %s
+
 ; Loop size = 3, when the function has the optsize attribute, the
 ; OptSizeUnrollThreshold, i.e. 50, is used, hence the loop should be unrolled
 ; by 32 times because (1 * 32) + 2 < 50 (whereas (1 * 64 + 2) is not).
@@ -49,4 +51,3 @@ exit:
 ; CHECK-NEXT: add
 ; CHECK-NEXT: add
 ; CHECK-NEXT: icmp
-