[llvm-commits] [llvm] r126671 - in /llvm/trunk: include/llvm/InitializePasses.h include/llvm/LinkAllPasses.h lib/CodeGen/LLVMTargetMachine.cpp lib/Transforms/Scalar/GEPSplitter.cpp lib/Transforms/Scalar/Scalar.cpp
Douglas Gregor
dgregor at apple.com
Mon Feb 28 13:27:51 PST 2011
Please also remove this source file from the corresponding CMakeLists.txt.
On Feb 28, 2011, at 11:47 AM, Dan Gohman wrote:
> Author: djg
> Date: Mon Feb 28 13:47:47 2011
> New Revision: 126671
>
> URL: http://llvm.org/viewvc/llvm-project?rev=126671&view=rev
> Log:
> Delete the GEPSplitter experiment.
>
> Removed:
> llvm/trunk/lib/Transforms/Scalar/GEPSplitter.cpp
> Modified:
> llvm/trunk/include/llvm/InitializePasses.h
> llvm/trunk/include/llvm/LinkAllPasses.h
> llvm/trunk/lib/CodeGen/LLVMTargetMachine.cpp
> llvm/trunk/lib/Transforms/Scalar/Scalar.cpp
>
> Modified: llvm/trunk/include/llvm/InitializePasses.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/InitializePasses.h?rev=126671&r1=126670&r2=126671&view=diff
> ==============================================================================
> --- llvm/trunk/include/llvm/InitializePasses.h (original)
> +++ llvm/trunk/include/llvm/InitializePasses.h Mon Feb 28 13:47:47 2011
> @@ -99,7 +99,6 @@
> void initializeFindUsedTypesPass(PassRegistry&);
> void initializeFunctionAttrsPass(PassRegistry&);
> void initializeGCModuleInfoPass(PassRegistry&);
> -void initializeGEPSplitterPass(PassRegistry&);
> void initializeGVNPass(PassRegistry&);
> void initializeGlobalDCEPass(PassRegistry&);
> void initializeGlobalOptPass(PassRegistry&);
>
> Modified: llvm/trunk/include/llvm/LinkAllPasses.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/LinkAllPasses.h?rev=126671&r1=126670&r2=126671&view=diff
> ==============================================================================
> --- llvm/trunk/include/llvm/LinkAllPasses.h (original)
> +++ llvm/trunk/include/llvm/LinkAllPasses.h Mon Feb 28 13:47:47 2011
> @@ -143,7 +143,6 @@
> (void) llvm::createDbgInfoPrinterPass();
> (void) llvm::createModuleDebugInfoPrinterPass();
> (void) llvm::createPartialInliningPass();
> - (void) llvm::createGEPSplitterPass();
> (void) llvm::createLintPass();
> (void) llvm::createSinkingPass();
> (void) llvm::createLowerAtomicPass();
>
> Modified: llvm/trunk/lib/CodeGen/LLVMTargetMachine.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/LLVMTargetMachine.cpp?rev=126671&r1=126670&r2=126671&view=diff
> ==============================================================================
> --- llvm/trunk/lib/CodeGen/LLVMTargetMachine.cpp (original)
> +++ llvm/trunk/lib/CodeGen/LLVMTargetMachine.cpp Mon Feb 28 13:47:47 2011
> @@ -98,12 +98,6 @@
> EnableFastISelOption("fast-isel", cl::Hidden,
> cl::desc("Enable the \"fast\" instruction selector"));
>
> -// Enable or disable an experimental optimization to split GEPs
> -// and run a special GVN pass which does not examine loads, in
> -// an effort to factor out redundancy implicit in complex GEPs.
> -static cl::opt<bool> EnableSplitGEPGVN("split-gep-gvn", cl::Hidden,
> - cl::desc("Split GEPs and run no-load GVN"));
> -
> LLVMTargetMachine::LLVMTargetMachine(const Target &T,
> const std::string &Triple)
> : TargetMachine(T), TargetTriple(Triple) {
> @@ -272,12 +266,6 @@
> if (!DisableVerify)
> PM.add(createVerifierPass());
>
> - // Optionally, tun split-GEPs and no-load GVN.
> - if (EnableSplitGEPGVN) {
> - PM.add(createGEPSplitterPass());
> - PM.add(createGVNPass(/*NoLoads=*/true));
> - }
> -
> // Run loop strength reduction before anything else.
> if (OptLevel != CodeGenOpt::None && !DisableLSR) {
> PM.add(createLoopStrengthReducePass(getTargetLowering()));
>
> Removed: llvm/trunk/lib/Transforms/Scalar/GEPSplitter.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Scalar/GEPSplitter.cpp?rev=126670&view=auto
> ==============================================================================
> --- llvm/trunk/lib/Transforms/Scalar/GEPSplitter.cpp (original)
> +++ llvm/trunk/lib/Transforms/Scalar/GEPSplitter.cpp (removed)
> @@ -1,83 +0,0 @@
> -//===- GEPSplitter.cpp - Split complex GEPs into simple ones --------------===//
> -//
> -// The LLVM Compiler Infrastructure
> -//
> -// This file is distributed under the University of Illinois Open Source
> -// License. See LICENSE.TXT for details.
> -//
> -//===----------------------------------------------------------------------===//
> -//
> -// This function breaks GEPs with more than 2 non-zero operands into smaller
> -// GEPs each with no more than 2 non-zero operands. This exposes redundancy
> -// between GEPs with common initial operand sequences.
> -//
> -//===----------------------------------------------------------------------===//
> -
> -#define DEBUG_TYPE "split-geps"
> -#include "llvm/Transforms/Scalar.h"
> -#include "llvm/Constants.h"
> -#include "llvm/Function.h"
> -#include "llvm/Instructions.h"
> -#include "llvm/Pass.h"
> -using namespace llvm;
> -
> -namespace {
> - class GEPSplitter : public FunctionPass {
> - virtual bool runOnFunction(Function &F);
> - virtual void getAnalysisUsage(AnalysisUsage &AU) const;
> - public:
> - static char ID; // Pass identification, replacement for typeid
> - explicit GEPSplitter() : FunctionPass(ID) {
> - initializeGEPSplitterPass(*PassRegistry::getPassRegistry());
> - }
> - };
> -}
> -
> -char GEPSplitter::ID = 0;
> -INITIALIZE_PASS(GEPSplitter, "split-geps",
> - "split complex GEPs into simple GEPs", false, false)
> -
> -FunctionPass *llvm::createGEPSplitterPass() {
> - return new GEPSplitter();
> -}
> -
> -bool GEPSplitter::runOnFunction(Function &F) {
> - bool Changed = false;
> -
> - // Visit each GEP instruction.
> - for (Function::iterator I = F.begin(), E = F.end(); I != E; ++I)
> - for (BasicBlock::iterator II = I->begin(), IE = I->end(); II != IE; )
> - if (GetElementPtrInst *GEP = dyn_cast<GetElementPtrInst>(II++)) {
> - unsigned NumOps = GEP->getNumOperands();
> - // Ignore GEPs which are already simple.
> - if (NumOps <= 2)
> - continue;
> - bool FirstIndexIsZero = isa<ConstantInt>(GEP->getOperand(1)) &&
> - cast<ConstantInt>(GEP->getOperand(1))->isZero();
> - if (NumOps == 3 && FirstIndexIsZero)
> - continue;
> - // The first index is special and gets expanded with a 2-operand GEP
> - // (unless it's zero, in which case we can skip this).
> - Value *NewGEP = FirstIndexIsZero ?
> - GEP->getOperand(0) :
> - GetElementPtrInst::Create(GEP->getOperand(0), GEP->getOperand(1),
> - "tmp", GEP);
> - // All remaining indices get expanded with a 3-operand GEP with zero
> - // as the second operand.
> - Value *Idxs[2];
> - Idxs[0] = ConstantInt::get(Type::getInt64Ty(F.getContext()), 0);
> - for (unsigned i = 2; i != NumOps; ++i) {
> - Idxs[1] = GEP->getOperand(i);
> - NewGEP = GetElementPtrInst::Create(NewGEP, Idxs, Idxs+2, "tmp", GEP);
> - }
> - GEP->replaceAllUsesWith(NewGEP);
> - GEP->eraseFromParent();
> - Changed = true;
> - }
> -
> - return Changed;
> -}
> -
> -void GEPSplitter::getAnalysisUsage(AnalysisUsage &AU) const {
> - AU.setPreservesCFG();
> -}
>
> Modified: llvm/trunk/lib/Transforms/Scalar/Scalar.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Scalar/Scalar.cpp?rev=126671&r1=126670&r2=126671&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Transforms/Scalar/Scalar.cpp (original)
> +++ llvm/trunk/lib/Transforms/Scalar/Scalar.cpp Mon Feb 28 13:47:47 2011
> @@ -34,7 +34,6 @@
> initializeDCEPass(Registry);
> initializeDeadInstEliminationPass(Registry);
> initializeDSEPass(Registry);
> - initializeGEPSplitterPass(Registry);
> initializeGVNPass(Registry);
> initializeEarlyCSEPass(Registry);
> initializeIndVarSimplifyPass(Registry);
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
More information about the llvm-commits
mailing list