OSDN Git Service

Addressing post-commit comments for not rewriting fputs:
authorSjoerd Meijer <sjoerd.meijer@arm.com>
Thu, 7 Jul 2016 14:31:19 +0000 (14:31 +0000)
committerSjoerd Meijer <sjoerd.meijer@arm.com>
Thu, 7 Jul 2016 14:31:19 +0000 (14:31 +0000)
moved the optimise for size check inside function optimizeFPuts.

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

lib/Transforms/Utils/SimplifyLibCalls.cpp

index 9bba359..c298695 100644 (file)
@@ -1836,6 +1836,11 @@ Value *LibCallSimplifier::optimizeFWrite(CallInst *CI, IRBuilder<> &B) {
 Value *LibCallSimplifier::optimizeFPuts(CallInst *CI, IRBuilder<> &B) {
   optimizeErrorReporting(CI, B, 1);
 
+  // Don't rewrite fputs to fwrite when optimising for size because fwrite
+  // requires more arguments and thus extra MOVs are required.
+  if (CI->getParent()->getParent()->optForSize())
+    return nullptr;
+
   // We can't optimize if return value is used.
   if (!CI->use_empty())
     return nullptr;
@@ -2056,8 +2061,6 @@ Value *LibCallSimplifier::optimizeCall(CallInst *CI) {
     case LibFunc::fwrite:
       return optimizeFWrite(CI, Builder);
     case LibFunc::fputs:
-      if (CI->getParent()->getParent()->optForSize())
-        return nullptr;
       return optimizeFPuts(CI, Builder);
     case LibFunc::log:
     case LibFunc::log10: