Skip to content

Commit 2c04104

Browse files
committed
Getting rid of UB in CHAResolver
1 parent 628d768 commit 2c04104

File tree

2 files changed

+5
-1
lines changed

2 files changed

+5
-1
lines changed

include/phasar/PhasarLLVM/ControlFlow/Resolver/CHAResolver.h

+3-1
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,9 @@ class CHAResolver : public Resolver {
3232
CHAResolver(const LLVMProjectIRDB *IRDB, const LLVMVFTableProvider *VTP,
3333
const LLVMTypeHierarchy *TH);
3434

35-
~CHAResolver() override = default;
35+
// Deleting an incomplete type (LLVMTypeHierarchy) is UB, so instantiate the
36+
// dtor in CHAResolver.cpp
37+
~CHAResolver() override;
3638

3739
FunctionSetTy resolveVirtualCall(const llvm::CallBase *CallSite) override;
3840

lib/PhasarLLVM/ControlFlow/Resolver/CHAResolver.cpp

+2
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,8 @@ CHAResolver::CHAResolver(const LLVMProjectIRDB *IRDB,
4040
}
4141
}
4242

43+
CHAResolver::~CHAResolver() = default;
44+
4345
auto CHAResolver::resolveVirtualCall(const llvm::CallBase *CallSite)
4446
-> FunctionSetTy {
4547
PHASAR_LOG_LEVEL(DEBUG, "Call virtual function: ");

0 commit comments

Comments
 (0)