diff options
Diffstat (limited to 'llvm/lib/IR/Verifier.cpp')
-rw-r--r-- | llvm/lib/IR/Verifier.cpp | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/llvm/lib/IR/Verifier.cpp b/llvm/lib/IR/Verifier.cpp index 1cfc4ef4001..a4cc785c6fa 100644 --- a/llvm/lib/IR/Verifier.cpp +++ b/llvm/lib/IR/Verifier.cpp @@ -470,7 +470,7 @@ static void forEachUser(const Value *User, llvm::function_ref<bool(const Value *)> Callback) { if (!Visited.insert(User).second) return; - for (const Value *TheNextUser : User->users()) + for (const Value *TheNextUser : User->materialized_users()) if (Callback(TheNextUser)) forEachUser(TheNextUser, Visited, Callback); } @@ -1944,7 +1944,9 @@ void Verifier::visitFunction(const Function &F) { // If this function is actually an intrinsic, verify that it is only used in // direct call/invokes, never having its "address taken". - if (F.getIntrinsicID()) { + // Only do this if the module is materialized, otherwise we don't have all the + // uses. + if (F.getIntrinsicID() && F.getParent()->isMaterialized()) { const User *U; if (F.hasAddressTaken(&U)) Assert(0, "Invalid user of intrinsic instruction!", U); |