@@ -310,8 +310,8 @@ class IRBuilder : public IRBuilderBase {
310310 // FunctionPointer.
311311
312312 bool isTrapIntrinsic (llvm::Value *Callee) {
313- return Callee ==
314- llvm::Intrinsic::getDeclaration ( getModule (), llvm::Intrinsic::trap);
313+ return Callee == llvm::Intrinsic::getOrInsertDeclaration (
314+ getModule (), llvm::Intrinsic::trap);
315315 }
316316 bool isTrapIntrinsic (llvm::Intrinsic::ID intrinsicID) {
317317 return intrinsicID == llvm::Intrinsic::trap;
@@ -381,7 +381,7 @@ class IRBuilder : public IRBuilderBase {
381381 const Twine &name = " " ) {
382382 assert (!isTrapIntrinsic (intrinsicID) && " Use CreateNonMergeableTrap" );
383383 auto intrinsicFn =
384- llvm::Intrinsic::getDeclaration (getModule (), intrinsicID);
384+ llvm::Intrinsic::getOrInsertDeclaration (getModule (), intrinsicID);
385385 return CreateCallWithoutDbgLoc (
386386 cast<llvm::FunctionType>(intrinsicFn->getValueType ()), intrinsicFn,
387387 args, name);
@@ -393,8 +393,8 @@ class IRBuilder : public IRBuilderBase {
393393 ArrayRef<llvm::Value *> args,
394394 const Twine &name = " " ) {
395395 assert (!isTrapIntrinsic (intrinsicID) && " Use CreateNonMergeableTrap" );
396- auto intrinsicFn =
397- llvm::Intrinsic::getDeclaration ( getModule (), intrinsicID, typeArgs);
396+ auto intrinsicFn = llvm::Intrinsic::getOrInsertDeclaration (
397+ getModule (), intrinsicID, typeArgs);
398398 return CreateCallWithoutDbgLoc (
399399 cast<llvm::FunctionType>(intrinsicFn->getValueType ()), intrinsicFn,
400400 args, name);
0 commit comments