summaryrefslogtreecommitdiffstats
path: root/llvm/lib
diff options
context:
space:
mode:
authorClement Courbet <courbet@google.com>2017-10-05 14:42:06 +0000
committerClement Courbet <courbet@google.com>2017-10-05 14:42:06 +0000
commit922e5bc698e9503843edf05fb9120c3f42cdf7a0 (patch)
treea9ec5f1c978eda3753dc62ef870f4dc2329c25e7 /llvm/lib
parentf11b5b4f87a19cfa69ffc7b0546269ab0dc95d4f (diff)
downloadbcm5719-llvm-922e5bc698e9503843edf05fb9120c3f42cdf7a0.tar.gz
bcm5719-llvm-922e5bc698e9503843edf05fb9120c3f42cdf7a0.zip
Revert "Re-land "[MergeICmps] Disable mergeicmps if the target does not want to handle memcmp expansion."""
broken test on windows This reverts commit c91479518344fd1fc071c5bd5848f6eb83e53dca. llvm-svn: 314985
Diffstat (limited to 'llvm/lib')
-rw-r--r--llvm/lib/Transforms/Scalar/MergeICmps.cpp35
1 files changed, 10 insertions, 25 deletions
diff --git a/llvm/lib/Transforms/Scalar/MergeICmps.cpp b/llvm/lib/Transforms/Scalar/MergeICmps.cpp
index a8e109db3a2..a56cffcdfa0 100644
--- a/llvm/lib/Transforms/Scalar/MergeICmps.cpp
+++ b/llvm/lib/Transforms/Scalar/MergeICmps.cpp
@@ -28,8 +28,6 @@
#include <vector>
#include "llvm/ADT/APSInt.h"
#include "llvm/Analysis/Loads.h"
-#include "llvm/Analysis/TargetLibraryInfo.h"
-#include "llvm/Analysis/TargetTransformInfo.h"
#include "llvm/IR/Function.h"
#include "llvm/IR/IRBuilder.h"
#include "llvm/IR/IntrinsicInst.h"
@@ -43,6 +41,8 @@ namespace {
#define DEBUG_TYPE "mergeicmps"
+#define MERGEICMPS_DOT_ON
+
// A BCE atom.
struct BCEAtom {
BCEAtom() : GEP(nullptr), LoadI(nullptr), Offset() {}
@@ -430,16 +430,10 @@ void BCECmpChain::mergeComparisons(ArrayRef<BCECmpBlock> Comparisons,
IRBuilder<> Builder(BB);
const auto &DL = Phi.getModule()->getDataLayout();
- GetElementPtrInst *LhsArg = FirstComparison.Lhs().GEP;
- GetElementPtrInst *RhsArg = FirstComparison.Rhs().GEP;
- // If the values are named, use the smaller name as first argument to
- // memcmp() so that results are reproducible.
- if (LhsArg->hasName() && RhsArg->hasName() &&
- LhsArg->getName() > RhsArg->getName())
- std::swap(LhsArg, RhsArg);
- Value *const MemCmpCall = emitMemCmp(
- LhsArg, RhsArg, ConstantInt::get(DL.getIntPtrType(Context), TotalSize),
- Builder, DL, TLI);
+ Value *const MemCmpCall =
+ emitMemCmp(FirstComparison.Lhs().GEP, FirstComparison.Rhs().GEP,
+ ConstantInt::get(DL.getIntPtrType(Context), TotalSize),
+ Builder, DL, TLI);
Value *const MemCmpIsZero = Builder.CreateICmpEQ(
MemCmpCall, ConstantInt::get(Type::getInt32Ty(Context), 0));
@@ -595,30 +589,22 @@ class MergeICmps : public FunctionPass {
bool runOnFunction(Function &F) override {
if (skipFunction(F)) return false;
const auto &TLI = getAnalysis<TargetLibraryInfoWrapperPass>().getTLI();
- const auto &TTI = getAnalysis<TargetTransformInfoWrapperPass>().getTTI(F);
- auto PA = runImpl(F, &TLI, &TTI);
+ auto PA = runImpl(F, &TLI);
return !PA.areAllPreserved();
}
private:
void getAnalysisUsage(AnalysisUsage &AU) const override {
AU.addRequired<TargetLibraryInfoWrapperPass>();
- AU.addRequired<TargetTransformInfoWrapperPass>();
}
- PreservedAnalyses runImpl(Function &F, const TargetLibraryInfo *TLI,
- const TargetTransformInfo *TTI);
+ PreservedAnalyses runImpl(Function &F, const TargetLibraryInfo *TLI);
};
-PreservedAnalyses MergeICmps::runImpl(Function &F, const TargetLibraryInfo *TLI,
- const TargetTransformInfo *TTI) {
+PreservedAnalyses MergeICmps::runImpl(Function &F,
+ const TargetLibraryInfo *TLI) {
DEBUG(dbgs() << "MergeICmpsPass: " << F.getName() << "\n");
- // We only try merging comparisons if the target wants to expand memcmp later.
- // The rationale is to avoid turning small chains into memcmp calls.
- unsigned MaxLoadSize;
- if (!TTI->enableMemCmpExpansion(MaxLoadSize)) return PreservedAnalyses::all();
-
bool MadeChange = false;
for (auto BBIt = ++F.begin(); BBIt != F.end(); ++BBIt) {
@@ -637,7 +623,6 @@ char MergeICmps::ID = 0;
INITIALIZE_PASS_BEGIN(MergeICmps, "mergeicmps",
"Merge contiguous icmps into a memcmp", false, false)
INITIALIZE_PASS_DEPENDENCY(TargetLibraryInfoWrapperPass)
-INITIALIZE_PASS_DEPENDENCY(TargetTransformInfoWrapperPass)
INITIALIZE_PASS_END(MergeICmps, "mergeicmps",
"Merge contiguous icmps into a memcmp", false, false)
OpenPOWER on IntegriCloud