Skip to content

Commit 6577640

Browse files
author
Martin Mory
committed
Fix getReturnSitesOfCallAt()
1 parent e895f42 commit 6577640

1 file changed

Lines changed: 14 additions & 2 deletions

File tree

lib/PhasarLLVM/ControlFlow/LLVMBasedICFG.cpp

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -667,8 +667,20 @@ set<const llvm::Instruction *>
667667
LLVMBasedICFG::getReturnSitesOfCallAt(const llvm::Instruction *N) const {
668668
set<const llvm::Instruction *> ReturnSites;
669669
if (const auto *Invoke = llvm::dyn_cast<llvm::InvokeInst>(N)) {
670-
ReturnSites.insert(&Invoke->getNormalDest()->front());
671-
ReturnSites.insert(&Invoke->getUnwindDest()->front());
670+
const llvm::Instruction *NormalSucc = &Invoke->getNormalDest()->front();
671+
auto *UnwindSucc = &Invoke->getUnwindDest()->front();
672+
if (!IgnoreDbgInstructions && llvm::isa<llvm::DbgInfoIntrinsic>(NormalSucc)) {
673+
NormalSucc = NormalSucc->getNextNonDebugInstruction();
674+
}
675+
if (!IgnoreDbgInstructions && llvm::isa<llvm::DbgInfoIntrinsic>(UnwindSucc)) {
676+
UnwindSucc = UnwindSucc->getNextNonDebugInstruction();
677+
}
678+
if (NormalSucc != nullptr) {
679+
ReturnSites.insert(NormalSucc);
680+
}
681+
if (UnwindSucc != nullptr) {
682+
ReturnSites.insert(UnwindSucc);
683+
}
672684
} else {
673685
auto Succs = getSuccsOf(N);
674686
ReturnSites.insert(Succs.begin(), Succs.end());

0 commit comments

Comments
 (0)