[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