1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-24 11:42:57 +01:00

Do not use separate utility to walk all instructions and remove dead dbg intrinsics. Let instcombiner do this job.

llvm-svn: 59659
This commit is contained in:
Devang Patel 2008-11-19 19:01:37 +00:00
parent 79a342d7d3
commit e5a07d989e
2 changed files with 0 additions and 88 deletions

View File

@ -1,28 +0,0 @@
//===-- Transform/Utils/DbgInfoUtils.h - DbgInfo Utils ----------*- C++ -*-===//
//
// The LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
//
// Utility functions to manipulate debugging information.
//
//===----------------------------------------------------------------------===//
#ifndef LLVM_TRANSFORMS_UTILS_DBGINFO_H
#define LLVM_TRANSFORMS_UTILS_DBGINFO_H
namespace llvm {
class BasicBlock;
class Function;
/// RemoveDeadDbgIntrinsics - Remove dead dbg intrinsics from this
/// basic block.
void RemoveDeadDbgIntrinsics(BasicBlock &BB);
/// RemoveDeadDbgIntrinsics - Remove dead dbg intrinsics from this function.
void RemoveDeadDbgIntrinsics(Function &F);
} // End llvm namespace
#endif

View File

@ -1,60 +0,0 @@
//===-- DbgInfoUtils.cpp - DbgInfo Utilities -------------------------------==//
//
// The LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
//
// Utility functions to manipulate debugging information.
//
//===----------------------------------------------------------------------===//
#include "llvm/Transforms/Utils/DbgInfoUtils.h"
#include "llvm/IntrinsicInst.h"
using namespace llvm;
/// RemoveDeadDbgIntrinsics - Remove dead dbg intrinsics from this
/// basic block.
void llvm::RemoveDeadDbgIntrinsics(BasicBlock &BB) {
BasicBlock::iterator BI = BB.begin(), BE = BB.end();
if (BI == BE) return;
Instruction *Prev = BI; ++BI;
while (BI != BE) {
Instruction *Next = BI; ++BI;
DbgInfoIntrinsic *DBI_Prev = dyn_cast<DbgInfoIntrinsic>(Prev);
if (!DBI_Prev) {
Prev = Next;
continue;
}
// If there are two consecutive llvm.dbg.stoppoint calls then
// it is likely that the optimizer deleted code in between these
// two intrinsics.
DbgInfoIntrinsic *DBI_Next = dyn_cast<DbgInfoIntrinsic>(Next);
if (DBI_Next
&& DBI_Prev->getIntrinsicID() == llvm::Intrinsic::dbg_stoppoint
&& DBI_Next->getIntrinsicID() == llvm::Intrinsic::dbg_stoppoint)
Prev->eraseFromParent();
// If a llvm.dbg.stoppoint is placed just before an unconditional
// branch then remove the llvm.dbg.stoppoint intrinsic.
else if (BranchInst *UC = dyn_cast<BranchInst>(Next)) {
if (UC->isUnconditional()
&& DBI_Prev->getIntrinsicID() == llvm::Intrinsic::dbg_stoppoint)
Prev->eraseFromParent();
}
Prev = Next;
}
}
/// RemoveDeadDbgIntrinsics - Remove dead dbg intrinsics from this function.
void llvm::RemoveDeadDbgIntrinsics(Function &F) {
for (Function::iterator FI = F.begin(), FE = F.end();
FI != FE; ++FI)
RemoveDeadDbgIntrinsics(*FI);
}