(void) llvm::createDeadTypeEliminationPass();
(void) llvm::createEdgeProfilerPass();
(void) llvm::createRedundantLoadEliminationPass();
(void) llvm::createDeadTypeEliminationPass();
(void) llvm::createEdgeProfilerPass();
(void) llvm::createRedundantLoadEliminationPass();
- (void) llvm::createFastDeadStoreEliminationPass();
(void) llvm::createFunctionInliningPass();
(void) llvm::createFunctionProfilerPass();
(void) llvm::createGCSEPass();
(void) llvm::createFunctionInliningPass();
(void) llvm::createFunctionProfilerPass();
(void) llvm::createGCSEPass();
//
FunctionPass *createGVNPREPass();
//
FunctionPass *createGVNPREPass();
-//===----------------------------------------------------------------------===//
-//
-// FastDeadStoreElimination - This pass deletes stores that are post-dominated by
-// must-aliased stores and are not loaded used between the stores.
-//
-FunctionPass *createFastDeadStoreEliminationPass();
-
//===----------------------------------------------------------------------===//
//
// RedundantLoadElimination - This pass deletes loads that are dominated by
//===----------------------------------------------------------------------===//
//
// RedundantLoadElimination - This pass deletes loads that are dominated by
-//===- FastDSE.cpp - Fast Dead Store Elimination --------------------------===//
+//===- DeadStoreElimination.cpp - Fast Dead Store Elimination --------------===//
//
// The LLVM Compiler Infrastructure
//
//
// The LLVM Compiler Infrastructure
//
//
//===----------------------------------------------------------------------===//
//
//===----------------------------------------------------------------------===//
-#define DEBUG_TYPE "fdse"
+#define DEBUG_TYPE "dse"
#include "llvm/Transforms/Scalar.h"
#include "llvm/Constants.h"
#include "llvm/Function.h"
#include "llvm/Transforms/Scalar.h"
#include "llvm/Constants.h"
#include "llvm/Function.h"
STATISTIC(NumFastOther , "Number of other instrs removed");
namespace {
STATISTIC(NumFastOther , "Number of other instrs removed");
namespace {
- struct VISIBILITY_HIDDEN FDSE : public FunctionPass {
+ struct VISIBILITY_HIDDEN DSE : public FunctionPass {
static char ID; // Pass identification, replacement for typeid
static char ID; // Pass identification, replacement for typeid
- FDSE() : FunctionPass((intptr_t)&ID) {}
+ DSE() : FunctionPass((intptr_t)&ID) {}
virtual bool runOnFunction(Function &F) {
bool Changed = false;
virtual bool runOnFunction(Function &F) {
bool Changed = false;
AU.addPreserved<MemoryDependenceAnalysis>();
}
};
AU.addPreserved<MemoryDependenceAnalysis>();
}
};
- char FDSE::ID = 0;
- RegisterPass<FDSE> X("fdse", "Fast Dead Store Elimination");
+ char DSE::ID = 0;
+ RegisterPass<DSE> X("dse", "Dead Store Elimination");
-FunctionPass *llvm::createFastDeadStoreEliminationPass() { return new FDSE(); }
+FunctionPass *llvm::createDeadStoreEliminationPass() { return new DSE(); }
-bool FDSE::runOnBasicBlock(BasicBlock &BB) {
+bool DSE::runOnBasicBlock(BasicBlock &BB) {
MemoryDependenceAnalysis& MD = getAnalysis<MemoryDependenceAnalysis>();
// Record the last-seen store to this pointer
MemoryDependenceAnalysis& MD = getAnalysis<MemoryDependenceAnalysis>();
// Record the last-seen store to this pointer
/// handleFreeWithNonTrivialDependency - Handle frees of entire structures whose
/// dependency is a store to a field of that structure
/// handleFreeWithNonTrivialDependency - Handle frees of entire structures whose
/// dependency is a store to a field of that structure
-bool FDSE::handleFreeWithNonTrivialDependency(FreeInst* F, Instruction* dep,
+bool DSE::handleFreeWithNonTrivialDependency(FreeInst* F, Instruction* dep,
SetVector<Instruction*>& possiblyDead) {
TargetData &TD = getAnalysis<TargetData>();
AliasAnalysis &AA = getAnalysis<AliasAnalysis>();
SetVector<Instruction*>& possiblyDead) {
TargetData &TD = getAnalysis<TargetData>();
AliasAnalysis &AA = getAnalysis<AliasAnalysis>();
/// handleEndBlock - Remove dead stores to stack-allocated locations in the function
/// end block
/// handleEndBlock - Remove dead stores to stack-allocated locations in the function
/// end block
-bool FDSE::handleEndBlock(BasicBlock& BB, SetVector<Instruction*>& possiblyDead) {
+bool DSE::handleEndBlock(BasicBlock& BB, SetVector<Instruction*>& possiblyDead) {
TargetData &TD = getAnalysis<TargetData>();
AliasAnalysis &AA = getAnalysis<AliasAnalysis>();
MemoryDependenceAnalysis& MD = getAnalysis<MemoryDependenceAnalysis>();
TargetData &TD = getAnalysis<TargetData>();
AliasAnalysis &AA = getAnalysis<AliasAnalysis>();
MemoryDependenceAnalysis& MD = getAnalysis<MemoryDependenceAnalysis>();
-bool FDSE::RemoveUndeadPointers(Value* killPointer, unsigned killPointerSize,
+bool DSE::RemoveUndeadPointers(Value* killPointer, unsigned killPointerSize,
BasicBlock::iterator& BBI,
SmallPtrSet<AllocaInst*, 4>& deadPointers,
SetVector<Instruction*>& possiblyDead) {
BasicBlock::iterator& BBI,
SmallPtrSet<AllocaInst*, 4>& deadPointers,
SetVector<Instruction*>& possiblyDead) {
-void FDSE::DeleteDeadInstructionChains(Instruction *I,
+void DSE::DeleteDeadInstructionChains(Instruction *I,
SetVector<Instruction*> &DeadInsts) {
// Instruction must be dead.
if (!I->use_empty() || !isInstructionTriviallyDead(I)) return;
SetVector<Instruction*> &DeadInsts) {
// Instruction must be dead.
if (!I->use_empty() || !isInstructionTriviallyDead(I)) return;
-; RUN: llvm-upgrade < %s | llvm-as | opt -fdse -scalarrepl -instcombine | \
+; RUN: llvm-upgrade < %s | llvm-as | opt -dse -scalarrepl -instcombine | \
; RUN: llvm-dis | not grep {ret int undef}
int %test(double %__x) {
; RUN: llvm-dis | not grep {ret int undef}
int %test(double %__x) {
-; RUN: llvm-upgrade < %s | llvm-as | opt -fdse | llvm-dis | \
+; RUN: llvm-upgrade < %s | llvm-as | opt -dse | llvm-dis | \
; RUN: grep {store i32 1234567}
; Do not delete stores that are only partially killed.
; RUN: grep {store i32 1234567}
; Do not delete stores that are only partially killed.
-; RUN: llvm-upgrade < %s | llvm-as | opt -fdse | llvm-dis | grep store
+; RUN: llvm-upgrade < %s | llvm-as | opt -dse | llvm-dis | grep store
double %foo(sbyte* %X) {
%X_addr = alloca sbyte*
double %foo(sbyte* %X) {
%X_addr = alloca sbyte*
-; RUN: llvm-upgrade < %s | llvm-as | opt -globalsmodref-aa -fdse -disable-output
+; RUN: llvm-upgrade < %s | llvm-as | opt -globalsmodref-aa -dse -disable-output
target endian = big
target pointersize = 32
target triple = "powerpc-apple-darwin8"
target endian = big
target pointersize = 32
target triple = "powerpc-apple-darwin8"
-; RUN: llvm-upgrade < %s | llvm-as | opt -fdse | llvm-dis | \
+; RUN: llvm-upgrade < %s | llvm-as | opt -dse | llvm-dis | \
; RUN: not grep {store sbyte}
; Ensure that the dead store is deleted in this case. It is wholely
; overwritten by the second store.
; RUN: not grep {store sbyte}
; Ensure that the dead store is deleted in this case. It is wholely
; overwritten by the second store.
addPass(Passes, createLICMPass()); // Hoist loop invariants
addPass(Passes, createLoadValueNumberingPass()); // GVN for load instrs
addPass(Passes, createGCSEPass()); // Remove common subexprs
addPass(Passes, createLICMPass()); // Hoist loop invariants
addPass(Passes, createLoadValueNumberingPass()); // GVN for load instrs
addPass(Passes, createGCSEPass()); // Remove common subexprs
- addPass(Passes, createFastDeadStoreEliminationPass()); // Nuke dead stores
+ addPass(Passes, createDeadStoreEliminationPass()); // Nuke dead stores
// Cleanup and simplify the code after the scalar optimizations.
addPass(Passes, createInstructionCombiningPass());
// Cleanup and simplify the code after the scalar optimizations.
addPass(Passes, createInstructionCombiningPass());
addPass(PM, createInstructionCombiningPass());
addPass(PM, createCondPropagationPass()); // Propagate conditionals
addPass(PM, createInstructionCombiningPass());
addPass(PM, createCondPropagationPass()); // Propagate conditionals
- addPass(PM, createFastDeadStoreEliminationPass()); // Delete dead stores
+ addPass(PM, createDeadStoreEliminationPass()); // Delete dead stores
addPass(PM, createAggressiveDCEPass()); // SSA based 'Aggressive DCE'
addPass(PM, createCFGSimplificationPass()); // Merge & remove BBs
addPass(PM, createSimplifyLibCallsPass()); // Library Call Optimizations
addPass(PM, createAggressiveDCEPass()); // SSA based 'Aggressive DCE'
addPass(PM, createCFGSimplificationPass()); // Merge & remove BBs
addPass(PM, createSimplifyLibCallsPass()); // Library Call Optimizations