+++ /dev/null
-//===-- 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
+++ /dev/null
-//===-- 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);
-}