aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/VMCore/Verifier.cpp12
1 files changed, 10 insertions, 2 deletions
diff --git a/lib/VMCore/Verifier.cpp b/lib/VMCore/Verifier.cpp
index d31e6cb512..6b70008aba 100644
--- a/lib/VMCore/Verifier.cpp
+++ b/lib/VMCore/Verifier.cpp
@@ -107,7 +107,8 @@ PreVer("preverify", "Preliminary module verification");
static const PassInfo *const PreVerifyID = &PreVer;
namespace {
- struct Verifier : public FunctionPass, public InstVisitor<Verifier> {
+ struct Verifier : public FunctionPass, public InstVisitor<Verifier>,
+ public AbstractTypeUser {
static char ID; // Pass ID, replacement for typeid
bool Broken; // Is this module found to be broken?
bool RealPass; // Are we not being run by a PassManager?
@@ -126,7 +127,7 @@ namespace {
SmallPtrSet<Instruction*, 16> InstsInThisBlock;
/// CheckedTypes - keep track of the types that have been checked already.
- SmallSet<PATypeHolder, 16> CheckedTypes;
+ SmallSet<const Type *, 16> CheckedTypes;
Verifier()
: FunctionPass(&ID),
@@ -336,6 +337,13 @@ namespace {
WriteType(T3);
Broken = true;
}
+
+ // Abstract type user interface.
+ void refineAbstractType(const DerivedType *OldTy, const Type *NewTy) {
+ CheckedTypes.erase(OldTy);
+ }
+ void typeBecameConcrete(const DerivedType *AbsTy) {}
+ void dump() const {}
};
} // End anonymous namespace