summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEli Bendersky <eliben@google.com>2014-03-24 16:36:39 +0000
committerEli Bendersky <eliben@google.com>2014-03-24 16:36:39 +0000
commit2685aa8713c7d17c43a84bdd3a699f2bfaae5914 (patch)
treeb80db0311570d5b6187c61228380f7861b3ddf23
parent4ddee6a5da57dbf45df2a3bccfb38e57aef6ad1e (diff)
downloadllvm-2685aa8713c7d17c43a84bdd3a699f2bfaae5914.tar.gz
llvm-2685aa8713c7d17c43a84bdd3a699f2bfaae5914.tar.bz2
llvm-2685aa8713c7d17c43a84bdd3a699f2bfaae5914.tar.xz
Removes the NVPTXSplitBBatBar pass.
This pass is a historic remnant and actually causes less efficient code to be generated in some cases. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@204620 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--lib/Target/NVPTX/CMakeLists.txt1
-rw-r--r--lib/Target/NVPTX/NVPTXSplitBBatBar.cpp73
-rw-r--r--lib/Target/NVPTX/NVPTXSplitBBatBar.h42
-rw-r--r--lib/Target/NVPTX/NVPTXTargetMachine.cpp2
4 files changed, 0 insertions, 118 deletions
diff --git a/lib/Target/NVPTX/CMakeLists.txt b/lib/Target/NVPTX/CMakeLists.txt
index 8d25077a87..20612b3ff5 100644
--- a/lib/Target/NVPTX/CMakeLists.txt
+++ b/lib/Target/NVPTX/CMakeLists.txt
@@ -16,7 +16,6 @@ set(NVPTXCodeGen_sources
NVPTXRegisterInfo.cpp
NVPTXSubtarget.cpp
NVPTXTargetMachine.cpp
- NVPTXSplitBBatBar.cpp
NVPTXLowerAggrCopies.cpp
NVPTXutil.cpp
NVPTXAllocaHoisting.cpp
diff --git a/lib/Target/NVPTX/NVPTXSplitBBatBar.cpp b/lib/Target/NVPTX/NVPTXSplitBBatBar.cpp
deleted file mode 100644
index d4a778ca11..0000000000
--- a/lib/Target/NVPTX/NVPTXSplitBBatBar.cpp
+++ /dev/null
@@ -1,73 +0,0 @@
-//===- NVPTXSplitBBatBar.cpp - Split BB at Barrier --*- C++ -*--===//
-//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-// Split basic blocks so that a basic block that contains a barrier instruction
-// only contains the barrier instruction.
-//
-//===----------------------------------------------------------------------===//
-
-#include "NVPTXSplitBBatBar.h"
-#include "NVPTXUtilities.h"
-#include "llvm/IR/Function.h"
-#include "llvm/IR/InstIterator.h"
-#include "llvm/IR/Instructions.h"
-#include "llvm/IR/IntrinsicInst.h"
-#include "llvm/IR/Intrinsics.h"
-
-using namespace llvm;
-
-namespace llvm { FunctionPass *createSplitBBatBarPass(); }
-
-char NVPTXSplitBBatBar::ID = 0;
-
-bool NVPTXSplitBBatBar::runOnFunction(Function &F) {
-
- SmallVector<Instruction *, 4> SplitPoints;
- bool changed = false;
-
- // Collect all the split points in SplitPoints
- for (Function::iterator BI = F.begin(), BE = F.end(); BI != BE; ++BI) {
- BasicBlock::iterator IB = BI->begin();
- BasicBlock::iterator II = IB;
- BasicBlock::iterator IE = BI->end();
-
- // Skit the first instruction. No splitting is needed at this
- // point even if this is a bar.
- while (II != IE) {
- if (IntrinsicInst *inst = dyn_cast<IntrinsicInst>(II)) {
- Intrinsic::ID id = inst->getIntrinsicID();
- // If this is a barrier, split at this instruction
- // and the next instruction.
- if (llvm::isBarrierIntrinsic(id)) {
- if (II != IB)
- SplitPoints.push_back(II);
- II++;
- if ((II != IE) && (!II->isTerminator())) {
- SplitPoints.push_back(II);
- II++;
- }
- continue;
- }
- }
- II++;
- }
- }
-
- for (unsigned i = 0; i != SplitPoints.size(); i++) {
- changed = true;
- Instruction *inst = SplitPoints[i];
- inst->getParent()->splitBasicBlock(inst, "bar_split");
- }
-
- return changed;
-}
-
-// This interface will most likely not be necessary, because this pass will
-// not be invoked by the driver, but will be used as a prerequisite to
-// another pass.
-FunctionPass *llvm::createSplitBBatBarPass() { return new NVPTXSplitBBatBar(); }
diff --git a/lib/Target/NVPTX/NVPTXSplitBBatBar.h b/lib/Target/NVPTX/NVPTXSplitBBatBar.h
deleted file mode 100644
index 03391feb3b..0000000000
--- a/lib/Target/NVPTX/NVPTXSplitBBatBar.h
+++ /dev/null
@@ -1,42 +0,0 @@
-//===-- llvm/lib/Target/NVPTX/NVPTXSplitBBatBar.h ---------------*- C++ -*-===//
-//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-//
-// This file contains the declaration of the NVIDIA specific declarations
-// for splitting basic blocks at barrier instructions.
-//
-//===----------------------------------------------------------------------===//
-
-#ifndef NVPTX_SPLIT_BB_AT_BAR_H
-#define NVPTX_SPLIT_BB_AT_BAR_H
-
-#include "llvm/CodeGen/MachineFunctionAnalysis.h"
-#include "llvm/Pass.h"
-
-namespace llvm {
-
-// actual analysis class, which is a functionpass
-struct NVPTXSplitBBatBar : public FunctionPass {
- static char ID;
-
- NVPTXSplitBBatBar() : FunctionPass(ID) {}
- void getAnalysisUsage(AnalysisUsage &AU) const {
- AU.addPreserved("stack-protector");
- AU.addPreserved<MachineFunctionAnalysis>();
- }
- virtual bool runOnFunction(Function &F);
-
- virtual const char *getPassName() const {
- return "Split basic blocks at barrier";
- }
-};
-
-extern FunctionPass *createSplitBBatBarPass();
-}
-
-#endif //NVPTX_SPLIT_BB_AT_BAR_H
diff --git a/lib/Target/NVPTX/NVPTXTargetMachine.cpp b/lib/Target/NVPTX/NVPTXTargetMachine.cpp
index 5ab8cea48f..c0009fa943 100644
--- a/lib/Target/NVPTX/NVPTXTargetMachine.cpp
+++ b/lib/Target/NVPTX/NVPTXTargetMachine.cpp
@@ -16,7 +16,6 @@
#include "NVPTX.h"
#include "NVPTXAllocaHoisting.h"
#include "NVPTXLowerAggrCopies.h"
-#include "NVPTXSplitBBatBar.h"
#include "llvm/ADT/OwningPtr.h"
#include "llvm/Analysis/Passes.h"
#include "llvm/CodeGen/AsmPrinter.h"
@@ -145,7 +144,6 @@ void NVPTXPassConfig::addIRPasses() {
bool NVPTXPassConfig::addInstSelector() {
addPass(createLowerAggrCopies());
- addPass(createSplitBBatBarPass());
addPass(createAllocaHoisting());
addPass(createNVPTXISelDag(getNVPTXTargetMachine(), getOptLevel()));
return false;