| 12 | : Handler(std::move(Handler)) {} |
| 13 | |
| 14 | std::set<const llvm::Function *> |
| 15 | TestTypeVirtSolver::solve(const CallBase &CB) const { |
| 16 | const auto *CO = CB.getCalledOperand(); |
| 17 | if (!CO) |
| 18 | return {}; |
| 19 | |
| 20 | const auto *I = dyn_cast_or_null<Instruction>(CO->stripPointerCasts()); |
| 21 | const auto *TBAA = getTBAA(I); |
| 22 | if (!TBAA || !TBAA->isTBAAVtableAccess()) |
| 23 | return {}; |
| 24 | |
| 25 | return Handler.get(I); |
| 26 | } |