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:
parent
79a342d7d3
commit
e5a07d989e
@ -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
|
@ -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);
|
||||
}
|
Loading…
Reference in New Issue
Block a user