[llvm] r299949 - Module::getOrInsertFunction is using C-style vararg instead of variadic templates.

David Blaikie via llvm-commits llvm-commits at lists.llvm.org
Mon Apr 17 12:55:28 PDT 2017


On Tue, Apr 11, 2017 at 8:13 AM Serge Guelton via llvm-commits <
llvm-commits at lists.llvm.org> wrote:

> Author: serge_sans_paille
> Date: Tue Apr 11 10:01:18 2017
> New Revision: 299949
>
> URL: http://llvm.org/viewvc/llvm-project?rev=299949&view=rev
> Log:
> Module::getOrInsertFunction is using C-style vararg instead of variadic
> templates.
>
> From a user prospective, it forces the use of an annoying nullptr to mark
> the end of the vararg, and there's not type checking on the arguments.
> The variadic template is an obvious solution to both issues.
>
> Differential Revision: https://reviews.llvm.org/D31070
>
>
> Modified:
>     llvm/trunk/examples/BrainF/BrainF.cpp
>     llvm/trunk/examples/BrainF/BrainFDriver.cpp
>     llvm/trunk/examples/Fibonacci/fibonacci.cpp
>     llvm/trunk/examples/HowToUseJIT/HowToUseJIT.cpp
>     llvm/trunk/examples/ParallelJIT/ParallelJIT.cpp
>     llvm/trunk/include/llvm/IR/Module.h
>     llvm/trunk/lib/CodeGen/CountingFunctionInserter.cpp
>     llvm/trunk/lib/CodeGen/IntrinsicLowering.cpp
>     llvm/trunk/lib/CodeGen/MachineOutliner.cpp
>     llvm/trunk/lib/CodeGen/SafeStack.cpp
>     llvm/trunk/lib/CodeGen/SjLjEHPrepare.cpp
>     llvm/trunk/lib/CodeGen/StackProtector.cpp
>     llvm/trunk/lib/CodeGen/TargetLoweringBase.cpp
>     llvm/trunk/lib/IR/Instructions.cpp
>     llvm/trunk/lib/IR/Module.cpp
>     llvm/trunk/lib/Target/Hexagon/HexagonLoopIdiomRecognition.cpp
>     llvm/trunk/lib/Target/Mips/Mips16HardFloat.cpp
>     llvm/trunk/lib/Target/X86/X86ISelLowering.cpp
>     llvm/trunk/lib/Transforms/IPO/CrossDSOCFI.cpp
>     llvm/trunk/lib/Transforms/IPO/WholeProgramDevirt.cpp
>     llvm/trunk/lib/Transforms/Instrumentation/AddressSanitizer.cpp
>     llvm/trunk/lib/Transforms/Instrumentation/EfficiencySanitizer.cpp
>     llvm/trunk/lib/Transforms/Instrumentation/MemorySanitizer.cpp
>     llvm/trunk/lib/Transforms/Instrumentation/SanitizerCoverage.cpp
>     llvm/trunk/lib/Transforms/Instrumentation/ThreadSanitizer.cpp
>     llvm/trunk/lib/Transforms/Scalar/LoopIdiomRecognize.cpp
>     llvm/trunk/lib/Transforms/Utils/BuildLibCalls.cpp
>     llvm/trunk/lib/Transforms/Utils/SimplifyLibCalls.cpp
>     llvm/trunk/tools/bugpoint/Miscompilation.cpp
>     llvm/trunk/tools/lli/lli.cpp
>
> Modified: llvm/trunk/examples/BrainF/BrainF.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/examples/BrainF/BrainF.cpp?rev=299949&r1=299948&r2=299949&view=diff
>
> ==============================================================================
> --- llvm/trunk/examples/BrainF/BrainF.cpp (original)
> +++ llvm/trunk/examples/BrainF/BrainF.cpp Tue Apr 11 10:01:18 2017
> @@ -74,18 +74,18 @@ void BrainF::header(LLVMContext& C) {
>
>    //declare i32 @getchar()
>    getchar_func = cast<Function>(module->
> -    getOrInsertFunction("getchar", IntegerType::getInt32Ty(C), NULL));
> +    getOrInsertFunction("getchar", IntegerType::getInt32Ty(C)));
>
>    //declare i32 @putchar(i32)
>    putchar_func = cast<Function>(module->
>      getOrInsertFunction("putchar", IntegerType::getInt32Ty(C),
> -                        IntegerType::getInt32Ty(C), NULL));
> +                        IntegerType::getInt32Ty(C)));
>
>    //Function header
>
>    //define void @brainf()
>    brainf_func = cast<Function>(module->
> -    getOrInsertFunction("brainf", Type::getVoidTy(C), NULL));
> +    getOrInsertFunction("brainf", Type::getVoidTy(C)));
>
>    builder = new IRBuilder<>(BasicBlock::Create(C, label, brainf_func));
>
> @@ -156,7 +156,7 @@ void BrainF::header(LLVMContext& C) {
>      //declare i32 @puts(i8 *)
>      Function *puts_func = cast<Function>(module->
>        getOrInsertFunction("puts", IntegerType::getInt32Ty(C),
> -                      PointerType::getUnqual(IntegerType::getInt8Ty(C)),
> NULL));
> +                      PointerType::getUnqual(IntegerType::getInt8Ty(C))));
>
>      //brainf.aberror:
>      aberrorbb = BasicBlock::Create(C, label, brainf_func);
>
> Modified: llvm/trunk/examples/BrainF/BrainFDriver.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/examples/BrainF/BrainFDriver.cpp?rev=299949&r1=299948&r2=299949&view=diff
>
> ==============================================================================
> --- llvm/trunk/examples/BrainF/BrainFDriver.cpp (original)
> +++ llvm/trunk/examples/BrainF/BrainFDriver.cpp Tue Apr 11 10:01:18 2017
> @@ -77,7 +77,7 @@ void addMainFunction(Module *mod) {
>      getOrInsertFunction("main",
> IntegerType::getInt32Ty(mod->getContext()),
>                          IntegerType::getInt32Ty(mod->getContext()),
>                          PointerType::getUnqual(PointerType::getUnqual(
> -                          IntegerType::getInt8Ty(mod->getContext()))),
> NULL));
> +                          IntegerType::getInt8Ty(mod->getContext())))));
>    {
>      Function::arg_iterator args = main_func->arg_begin();
>      Value *arg_0 = &*args++;
>
> Modified: llvm/trunk/examples/Fibonacci/fibonacci.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/examples/Fibonacci/fibonacci.cpp?rev=299949&r1=299948&r2=299949&view=diff
>
> ==============================================================================
> --- llvm/trunk/examples/Fibonacci/fibonacci.cpp (original)
> +++ llvm/trunk/examples/Fibonacci/fibonacci.cpp Tue Apr 11 10:01:18 2017
> @@ -54,8 +54,7 @@ static Function *CreateFibFunction(Modul
>    // to return an int and take an int parameter.
>    Function *FibF =
>      cast<Function>(M->getOrInsertFunction("fib",
> Type::getInt32Ty(Context),
> -                                          Type::getInt32Ty(Context),
> -                                          nullptr));
> +                                          Type::getInt32Ty(Context)));
>
>    // Add a basic block to the function.
>    BasicBlock *BB = BasicBlock::Create(Context, "EntryBlock", FibF);
>
> Modified: llvm/trunk/examples/HowToUseJIT/HowToUseJIT.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/examples/HowToUseJIT/HowToUseJIT.cpp?rev=299949&r1=299948&r2=299949&view=diff
>
> ==============================================================================
> --- llvm/trunk/examples/HowToUseJIT/HowToUseJIT.cpp (original)
> +++ llvm/trunk/examples/HowToUseJIT/HowToUseJIT.cpp Tue Apr 11 10:01:18
> 2017
> @@ -69,11 +69,9 @@ int main() {
>
>    // Create the add1 function entry and insert this entry into module M.
> The
>    // function will have a return type of "int" and take an argument of
> "int".
> -  // The '0' terminates the list of argument types.
>    Function *Add1F =
>      cast<Function>(M->getOrInsertFunction("add1",
> Type::getInt32Ty(Context),
> -                                          Type::getInt32Ty(Context),
> -                                          nullptr));
> +                                          Type::getInt32Ty(Context)));
>
>    // Add a basic block to the function. As before, it automatically
> inserts
>    // because of the last argument.
> @@ -102,8 +100,7 @@ int main() {
>    // Now we're going to create function `foo', which returns an int and
> takes no
>    // arguments.
>    Function *FooF =
> -    cast<Function>(M->getOrInsertFunction("foo",
> Type::getInt32Ty(Context),
> -                                          nullptr));
> +    cast<Function>(M->getOrInsertFunction("foo",
> Type::getInt32Ty(Context)));
>
>    // Add a basic block to the FooF function.
>    BB = BasicBlock::Create(Context, "EntryBlock", FooF);
>
> Modified: llvm/trunk/examples/ParallelJIT/ParallelJIT.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/examples/ParallelJIT/ParallelJIT.cpp?rev=299949&r1=299948&r2=299949&view=diff
>
> ==============================================================================
> --- llvm/trunk/examples/ParallelJIT/ParallelJIT.cpp (original)
> +++ llvm/trunk/examples/ParallelJIT/ParallelJIT.cpp Tue Apr 11 10:01:18
> 2017
> @@ -54,8 +54,7 @@ static Function* createAdd1(Module *M) {
>    Function *Add1F =
>      cast<Function>(M->getOrInsertFunction("add1",
>
>  Type::getInt32Ty(M->getContext()),
> -
> Type::getInt32Ty(M->getContext()),
> -                                          nullptr));
> +
> Type::getInt32Ty(M->getContext())));
>
>    // Add a basic block to the function. As before, it automatically
> inserts
>    // because of the last argument.
> @@ -85,8 +84,7 @@ static Function *CreateFibFunction(Modul
>    Function *FibF =
>      cast<Function>(M->getOrInsertFunction("fib",
>
>  Type::getInt32Ty(M->getContext()),
> -
> Type::getInt32Ty(M->getContext()),
> -                                          nullptr));
> +
> Type::getInt32Ty(M->getContext())));
>
>    // Add a basic block to the function.
>    BasicBlock *BB = BasicBlock::Create(M->getContext(), "EntryBlock",
> FibF);
>
> Modified: llvm/trunk/include/llvm/IR/Module.h
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/IR/Module.h?rev=299949&r1=299948&r2=299949&view=diff
>
> ==============================================================================
> --- llvm/trunk/include/llvm/IR/Module.h (original)
> +++ llvm/trunk/include/llvm/IR/Module.h Tue Apr 11 10:01:18 2017
> @@ -321,12 +321,22 @@ public:
>    /// or a ConstantExpr BitCast of that type if the named function has a
>    /// different type. This version of the method takes a null terminated
> list of
>    /// function arguments, which makes it easier for clients to use.
> -  Constant *getOrInsertFunction(StringRef Name, AttributeList
> AttributeList,
> -                                Type *RetTy, ...) LLVM_END_WITH_NULL;
> +  template<typename... ArgsTy>
> +  Constant *getOrInsertFunction(StringRef Name,
> +                                AttributeList AttributeList,
> +                                Type *RetTy, ArgsTy... Args)
> +  {
> +    SmallVector<Type*, sizeof...(ArgsTy)> ArgTys{Args...};
>

Is this ^ calling a ctor or list initialization? If it's a ctor, please
write it with () rathert han {}, if it's list init, please write it with "T
x = {}" syntax, I think? (goes similarly for other changes like this in
this patch and another committed recently)


> +    return getOrInsertFunction(Name,
> +                               FunctionType::get(RetTy, ArgTys, false),
> +                               AttributeList);
> +  }
>
>    /// Same as above, but without the attributes.
> -  Constant *getOrInsertFunction(StringRef Name, Type *RetTy, ...)
> -    LLVM_END_WITH_NULL;
> +  template<typename... ArgsTy>
> +  Constant *getOrInsertFunction(StringRef Name, Type *RetTy, ArgsTy...
> Args) {
> +    return getOrInsertFunction(Name, AttributeList{}, RetTy, Args...);
> +  }
>
>    /// Look up the specified function in the module symbol table. If it
> does not
>    /// exist, return null.
>
> Modified: llvm/trunk/lib/CodeGen/CountingFunctionInserter.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/CountingFunctionInserter.cpp?rev=299949&r1=299948&r2=299949&view=diff
>
> ==============================================================================
> --- llvm/trunk/lib/CodeGen/CountingFunctionInserter.cpp (original)
> +++ llvm/trunk/lib/CodeGen/CountingFunctionInserter.cpp Tue Apr 11
> 10:01:18 2017
> @@ -41,7 +41,7 @@ namespace {
>        Type *VoidTy = Type::getVoidTy(F.getContext());
>        Constant *CountingFn =
>          F.getParent()->getOrInsertFunction(CountingFunctionName,
> -                                           VoidTy, nullptr);
> +                                           VoidTy);
>        CallInst::Create(CountingFn, "",
> &*F.begin()->getFirstInsertionPt());
>        return true;
>      }
>
> Modified: llvm/trunk/lib/CodeGen/IntrinsicLowering.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/IntrinsicLowering.cpp?rev=299949&r1=299948&r2=299949&view=diff
>
> ==============================================================================
> --- llvm/trunk/lib/CodeGen/IntrinsicLowering.cpp (original)
> +++ llvm/trunk/lib/CodeGen/IntrinsicLowering.cpp Tue Apr 11 10:01:18 2017
> @@ -115,21 +115,21 @@ void IntrinsicLowering::AddPrototypes(Mo
>            Type::getInt8PtrTy(Context),
>                                Type::getInt8PtrTy(Context),
>                                Type::getInt8PtrTy(Context),
> -                              DL.getIntPtrType(Context), nullptr);
> +                              DL.getIntPtrType(Context));
>          break;
>        case Intrinsic::memmove:
>          M.getOrInsertFunction("memmove",
>            Type::getInt8PtrTy(Context),
>                                Type::getInt8PtrTy(Context),
>                                Type::getInt8PtrTy(Context),
> -                              DL.getIntPtrType(Context), nullptr);
> +                              DL.getIntPtrType(Context));
>          break;
>        case Intrinsic::memset:
>          M.getOrInsertFunction("memset",
>            Type::getInt8PtrTy(Context),
>                                Type::getInt8PtrTy(Context),
>                                Type::getInt32Ty(M.getContext()),
> -                              DL.getIntPtrType(Context), nullptr);
> +                              DL.getIntPtrType(Context));
>          break;
>        case Intrinsic::sqrt:
>          EnsureFPIntrinsicsExist(M, F, "sqrtf", "sqrt", "sqrtl");
>
> Modified: llvm/trunk/lib/CodeGen/MachineOutliner.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/MachineOutliner.cpp?rev=299949&r1=299948&r2=299949&view=diff
>
> ==============================================================================
> --- llvm/trunk/lib/CodeGen/MachineOutliner.cpp (original)
> +++ llvm/trunk/lib/CodeGen/MachineOutliner.cpp Tue Apr 11 10:01:18 2017
> @@ -1098,7 +1098,7 @@ MachineOutliner::createOutlinedFunction(
>    // Create the function using an IR-level function.
>    LLVMContext &C = M.getContext();
>    Function *F = dyn_cast<Function>(
> -      M.getOrInsertFunction(NameStream.str(), Type::getVoidTy(C),
> nullptr));
> +      M.getOrInsertFunction(NameStream.str(), Type::getVoidTy(C)));
>    assert(F && "Function was null!");
>
>    // NOTE: If this is linkonceodr, then we can take advantage of linker
> deduping
>
> Modified: llvm/trunk/lib/CodeGen/SafeStack.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/SafeStack.cpp?rev=299949&r1=299948&r2=299949&view=diff
>
> ==============================================================================
> --- llvm/trunk/lib/CodeGen/SafeStack.cpp (original)
> +++ llvm/trunk/lib/CodeGen/SafeStack.cpp Tue Apr 11 10:01:18 2017
> @@ -451,7 +451,7 @@ void SafeStack::checkStackGuard(IRBuilde
>    IRBuilder<> IRBFail(CheckTerm);
>    // FIXME: respect -fsanitize-trap / -ftrap-function here?
>    Constant *StackChkFail = F.getParent()->getOrInsertFunction(
> -      "__stack_chk_fail", IRB.getVoidTy(), nullptr);
> +      "__stack_chk_fail", IRB.getVoidTy());
>    IRBFail.CreateCall(StackChkFail, {});
>  }
>
>
> Modified: llvm/trunk/lib/CodeGen/SjLjEHPrepare.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/SjLjEHPrepare.cpp?rev=299949&r1=299948&r2=299949&view=diff
>
> ==============================================================================
> --- llvm/trunk/lib/CodeGen/SjLjEHPrepare.cpp (original)
> +++ llvm/trunk/lib/CodeGen/SjLjEHPrepare.cpp Tue Apr 11 10:01:18 2017
> @@ -482,10 +482,10 @@ bool SjLjEHPrepare::runOnFunction(Functi
>    Module &M = *F.getParent();
>    RegisterFn = M.getOrInsertFunction(
>        "_Unwind_SjLj_Register", Type::getVoidTy(M.getContext()),
> -      PointerType::getUnqual(FunctionContextTy), nullptr);
> +      PointerType::getUnqual(FunctionContextTy));
>    UnregisterFn = M.getOrInsertFunction(
>        "_Unwind_SjLj_Unregister", Type::getVoidTy(M.getContext()),
> -      PointerType::getUnqual(FunctionContextTy), nullptr);
> +      PointerType::getUnqual(FunctionContextTy));
>    FrameAddrFn = Intrinsic::getDeclaration(&M, Intrinsic::frameaddress);
>    StackAddrFn = Intrinsic::getDeclaration(&M, Intrinsic::stacksave);
>    StackRestoreFn = Intrinsic::getDeclaration(&M, Intrinsic::stackrestore);
>
> Modified: llvm/trunk/lib/CodeGen/StackProtector.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/StackProtector.cpp?rev=299949&r1=299948&r2=299949&view=diff
>
> ==============================================================================
> --- llvm/trunk/lib/CodeGen/StackProtector.cpp (original)
> +++ llvm/trunk/lib/CodeGen/StackProtector.cpp Tue Apr 11 10:01:18 2017
> @@ -484,13 +484,13 @@ BasicBlock *StackProtector::CreateFailBB
>      Constant *StackChkFail =
>          M->getOrInsertFunction("__stack_smash_handler",
>                                 Type::getVoidTy(Context),
> -                               Type::getInt8PtrTy(Context), nullptr);
> +                               Type::getInt8PtrTy(Context));
>
>      B.CreateCall(StackChkFail, B.CreateGlobalStringPtr(F->getName(),
> "SSH"));
>    } else {
>      Constant *StackChkFail =
> -        M->getOrInsertFunction("__stack_chk_fail",
> Type::getVoidTy(Context),
> -                               nullptr);
> +        M->getOrInsertFunction("__stack_chk_fail",
> Type::getVoidTy(Context));
> +
>      B.CreateCall(StackChkFail, {});
>    }
>    B.CreateUnreachable();
>
> Modified: llvm/trunk/lib/CodeGen/TargetLoweringBase.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/TargetLoweringBase.cpp?rev=299949&r1=299948&r2=299949&view=diff
>
> ==============================================================================
> --- llvm/trunk/lib/CodeGen/TargetLoweringBase.cpp (original)
> +++ llvm/trunk/lib/CodeGen/TargetLoweringBase.cpp Tue Apr 11 10:01:18 2017
> @@ -1818,7 +1818,7 @@ Value *TargetLoweringBase::getSafeStackP
>    Module *M = IRB.GetInsertBlock()->getParent()->getParent();
>    Type *StackPtrTy = Type::getInt8PtrTy(M->getContext());
>    Value *Fn = M->getOrInsertFunction("__safestack_pointer_address",
> -                                     StackPtrTy->getPointerTo(0),
> nullptr);
> +                                     StackPtrTy->getPointerTo(0));
>    return IRB.CreateCall(Fn);
>  }
>
>
> Modified: llvm/trunk/lib/IR/Instructions.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/IR/Instructions.cpp?rev=299949&r1=299948&r2=299949&view=diff
>
> ==============================================================================
> --- llvm/trunk/lib/IR/Instructions.cpp (original)
> +++ llvm/trunk/lib/IR/Instructions.cpp Tue Apr 11 10:01:18 2017
> @@ -466,7 +466,7 @@ static Instruction *createMalloc(Instruc
>    Value *MallocFunc = MallocF;
>    if (!MallocFunc)
>      // prototype malloc as "void *malloc(size_t)"
> -    MallocFunc = M->getOrInsertFunction("malloc", BPTy, IntPtrTy,
> nullptr);
> +    MallocFunc = M->getOrInsertFunction("malloc", BPTy, IntPtrTy);
>    PointerType *AllocPtrType = PointerType::getUnqual(AllocTy);
>    CallInst *MCall = nullptr;
>    Instruction *Result = nullptr;
> @@ -560,7 +560,7 @@ static Instruction *createFree(Value *So
>    Type *VoidTy = Type::getVoidTy(M->getContext());
>    Type *IntPtrTy = Type::getInt8PtrTy(M->getContext());
>    // prototype free as "void free(void*)"
> -  Value *FreeFunc = M->getOrInsertFunction("free", VoidTy, IntPtrTy,
> nullptr);
> +  Value *FreeFunc = M->getOrInsertFunction("free", VoidTy, IntPtrTy);
>    CallInst *Result = nullptr;
>    Value *PtrCast = Source;
>    if (InsertBefore) {
>
> Modified: llvm/trunk/lib/IR/Module.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/IR/Module.cpp?rev=299949&r1=299948&r2=299949&view=diff
>
> ==============================================================================
> --- llvm/trunk/lib/IR/Module.cpp (original)
> +++ llvm/trunk/lib/IR/Module.cpp Tue Apr 11 10:01:18 2017
> @@ -147,47 +147,6 @@ Constant *Module::getOrInsertFunction(St
>    return getOrInsertFunction(Name, Ty, AttributeList());
>  }
>
> -// getOrInsertFunction - Look up the specified function in the module
> symbol
> -// table.  If it does not exist, add a prototype for the function and
> return it.
> -// This version of the method takes a null terminated list of function
> -// arguments, which makes it easier for clients to use.
> -//
> -Constant *Module::getOrInsertFunction(StringRef Name,
> -                                      AttributeList AttributeList, Type
> *RetTy,
> -                                      ...) {
> -  va_list Args;
> -  va_start(Args, RetTy);
> -
> -  // Build the list of argument types...
> -  std::vector<Type*> ArgTys;
> -  while (Type *ArgTy = va_arg(Args, Type*))
> -    ArgTys.push_back(ArgTy);
> -
> -  va_end(Args);
> -
> -  // Build the function type and chain to the other getOrInsertFunction...
> -  return getOrInsertFunction(Name,
> -                             FunctionType::get(RetTy, ArgTys, false),
> -                             AttributeList);
> -}
> -
> -Constant *Module::getOrInsertFunction(StringRef Name,
> -                                      Type *RetTy, ...) {
> -  va_list Args;
> -  va_start(Args, RetTy);
> -
> -  // Build the list of argument types...
> -  std::vector<Type*> ArgTys;
> -  while (Type *ArgTy = va_arg(Args, Type*))
> -    ArgTys.push_back(ArgTy);
> -
> -  va_end(Args);
> -
> -  // Build the function type and chain to the other getOrInsertFunction...
> -  return getOrInsertFunction(Name, FunctionType::get(RetTy, ArgTys,
> false),
> -                             AttributeList());
> -}
> -
>  // getFunction - Look up the specified function in the module symbol
> table.
>  // If it does not exist, return null.
>  //
>
> Modified: llvm/trunk/lib/Target/Hexagon/HexagonLoopIdiomRecognition.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Hexagon/HexagonLoopIdiomRecognition.cpp?rev=299949&r1=299948&r2=299949&view=diff
>
> ==============================================================================
> --- llvm/trunk/lib/Target/Hexagon/HexagonLoopIdiomRecognition.cpp
> (original)
> +++ llvm/trunk/lib/Target/Hexagon/HexagonLoopIdiomRecognition.cpp Tue Apr
> 11 10:01:18 2017
> @@ -2146,8 +2146,7 @@ CleanupAndExit:
>        Type *VoidTy = Type::getVoidTy(Ctx);
>        Module *M = Func->getParent();
>        Constant *CF = M->getOrInsertFunction(HexagonVolatileMemcpyName,
> VoidTy,
> -                                            Int32PtrTy, Int32PtrTy,
> Int32Ty,
> -                                            nullptr);
> +                                            Int32PtrTy, Int32PtrTy,
> Int32Ty);
>        Function *Fn = cast<Function>(CF);
>        Fn->setLinkage(Function::ExternalLinkage);
>
>
> Modified: llvm/trunk/lib/Target/Mips/Mips16HardFloat.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Mips/Mips16HardFloat.cpp?rev=299949&r1=299948&r2=299949&view=diff
>
> ==============================================================================
> --- llvm/trunk/lib/Target/Mips/Mips16HardFloat.cpp (original)
> +++ llvm/trunk/lib/Target/Mips/Mips16HardFloat.cpp Tue Apr 11 10:01:18 2017
> @@ -420,7 +420,7 @@ static bool fixupFPReturnAndCall(Functio
>                             Attribute::ReadNone);
>          A = A.addAttribute(C, AttributeList::FunctionIndex,
>                             Attribute::NoInline);
> -        Value *F = (M->getOrInsertFunction(Name, A, MyVoid, T, nullptr));
> +        Value *F = (M->getOrInsertFunction(Name, A, MyVoid, T));
>          CallInst::Create(F, Params, "", &I);
>        } else if (const CallInst *CI = dyn_cast<CallInst>(&I)) {
>          FunctionType *FT = CI->getFunctionType();
>
> Modified: llvm/trunk/lib/Target/X86/X86ISelLowering.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86ISelLowering.cpp?rev=299949&r1=299948&r2=299949&view=diff
>
> ==============================================================================
> --- llvm/trunk/lib/Target/X86/X86ISelLowering.cpp (original)
> +++ llvm/trunk/lib/Target/X86/X86ISelLowering.cpp Tue Apr 11 10:01:18 2017
> @@ -2101,7 +2101,7 @@ void X86TargetLowering::insertSSPDeclara
>      auto *SecurityCheckCookie = cast<Function>(
>          M.getOrInsertFunction("__security_check_cookie",
>                                Type::getVoidTy(M.getContext()),
> -                              Type::getInt8PtrTy(M.getContext()),
> nullptr));
> +                              Type::getInt8PtrTy(M.getContext())));
>      SecurityCheckCookie->setCallingConv(CallingConv::X86_FastCall);
>      SecurityCheckCookie->addAttribute(1, Attribute::AttrKind::InReg);
>      return;
>
> Modified: llvm/trunk/lib/Transforms/IPO/CrossDSOCFI.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/IPO/CrossDSOCFI.cpp?rev=299949&r1=299948&r2=299949&view=diff
>
> ==============================================================================
> --- llvm/trunk/lib/Transforms/IPO/CrossDSOCFI.cpp (original)
> +++ llvm/trunk/lib/Transforms/IPO/CrossDSOCFI.cpp Tue Apr 11 10:01:18 2017
> @@ -98,7 +98,7 @@ void CrossDSOCFI::buildCFICheck(Module &
>    LLVMContext &Ctx = M.getContext();
>    Constant *C = M.getOrInsertFunction(
>        "__cfi_check", Type::getVoidTy(Ctx), Type::getInt64Ty(Ctx),
> -      Type::getInt8PtrTy(Ctx), Type::getInt8PtrTy(Ctx), nullptr);
> +      Type::getInt8PtrTy(Ctx), Type::getInt8PtrTy(Ctx));
>    Function *F = dyn_cast<Function>(C);
>    // Take over the existing function. The frontend emits a weak stub so
> that the
>    // linker knows about the symbol; this pass replaces the function body.
> @@ -120,7 +120,7 @@ void CrossDSOCFI::buildCFICheck(Module &
>    IRBuilder<> IRBFail(TrapBB);
>    Constant *CFICheckFailFn = M.getOrInsertFunction(
>        "__cfi_check_fail", Type::getVoidTy(Ctx), Type::getInt8PtrTy(Ctx),
> -      Type::getInt8PtrTy(Ctx), nullptr);
> +      Type::getInt8PtrTy(Ctx));
>    IRBFail.CreateCall(CFICheckFailFn, {&CFICheckFailData, &Addr});
>    IRBFail.CreateBr(ExitBB);
>
>
> Modified: llvm/trunk/lib/Transforms/IPO/WholeProgramDevirt.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/IPO/WholeProgramDevirt.cpp?rev=299949&r1=299948&r2=299949&view=diff
>
> ==============================================================================
> --- llvm/trunk/lib/Transforms/IPO/WholeProgramDevirt.cpp (original)
> +++ llvm/trunk/lib/Transforms/IPO/WholeProgramDevirt.cpp Tue Apr 11
> 10:01:18 2017
> @@ -1221,7 +1221,7 @@ void DevirtModule::importResolution(VTab
>      // The type of the function in the declaration is irrelevant because
> every
>      // call site will cast it to the correct type.
>      auto *SingleImpl = M.getOrInsertFunction(
> -        Res.SingleImplName, Type::getVoidTy(M.getContext()), nullptr);
> +        Res.SingleImplName, Type::getVoidTy(M.getContext()));
>
>      // This is the import phase so we should not be exporting anything.
>      bool IsExported = false;
>
> Modified: llvm/trunk/lib/Transforms/Instrumentation/AddressSanitizer.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Instrumentation/AddressSanitizer.cpp?rev=299949&r1=299948&r2=299949&view=diff
>
> ==============================================================================
> --- llvm/trunk/lib/Transforms/Instrumentation/AddressSanitizer.cpp
> (original)
> +++ llvm/trunk/lib/Transforms/Instrumentation/AddressSanitizer.cpp Tue Apr
> 11 10:01:18 2017
> @@ -1568,31 +1568,31 @@ void AddressSanitizerModule::initializeC
>
>    // Declare our poisoning and unpoisoning functions.
>    AsanPoisonGlobals =
> checkSanitizerInterfaceFunction(M.getOrInsertFunction(
> -      kAsanPoisonGlobalsName, IRB.getVoidTy(), IntptrTy, nullptr));
> +      kAsanPoisonGlobalsName, IRB.getVoidTy(), IntptrTy));
>    AsanPoisonGlobals->setLinkage(Function::ExternalLinkage);
>    AsanUnpoisonGlobals =
> checkSanitizerInterfaceFunction(M.getOrInsertFunction(
> -      kAsanUnpoisonGlobalsName, IRB.getVoidTy(), nullptr));
> +      kAsanUnpoisonGlobalsName, IRB.getVoidTy()));
>    AsanUnpoisonGlobals->setLinkage(Function::ExternalLinkage);
>
>    // Declare functions that register/unregister globals.
>    AsanRegisterGlobals =
> checkSanitizerInterfaceFunction(M.getOrInsertFunction(
> -      kAsanRegisterGlobalsName, IRB.getVoidTy(), IntptrTy, IntptrTy,
> nullptr));
> +      kAsanRegisterGlobalsName, IRB.getVoidTy(), IntptrTy, IntptrTy));
>    AsanRegisterGlobals->setLinkage(Function::ExternalLinkage);
>    AsanUnregisterGlobals = checkSanitizerInterfaceFunction(
>        M.getOrInsertFunction(kAsanUnregisterGlobalsName, IRB.getVoidTy(),
> -                            IntptrTy, IntptrTy, nullptr));
> +                            IntptrTy, IntptrTy));
>    AsanUnregisterGlobals->setLinkage(Function::ExternalLinkage);
>
>    // Declare the functions that find globals in a shared object and then
> invoke
>    // the (un)register function on them.
>    AsanRegisterImageGlobals =
>        checkSanitizerInterfaceFunction(M.getOrInsertFunction(
> -          kAsanRegisterImageGlobalsName, IRB.getVoidTy(), IntptrTy,
> nullptr));
> +          kAsanRegisterImageGlobalsName, IRB.getVoidTy(), IntptrTy));
>    AsanRegisterImageGlobals->setLinkage(Function::ExternalLinkage);
>
>    AsanUnregisterImageGlobals =
>        checkSanitizerInterfaceFunction(M.getOrInsertFunction(
> -          kAsanUnregisterImageGlobalsName, IRB.getVoidTy(), IntptrTy,
> nullptr));
> +          kAsanUnregisterImageGlobalsName, IRB.getVoidTy(), IntptrTy));
>    AsanUnregisterImageGlobals->setLinkage(Function::ExternalLinkage);
>  }
>
> @@ -1963,49 +1963,60 @@ void AddressSanitizer::initializeCallbac
>        const std::string ExpStr = Exp ? "exp_" : "";
>        const std::string SuffixStr = CompileKernel ? "N" : "_n";
>        const std::string EndingStr = Recover ? "_noabort" : "";
> -      Type *ExpType = Exp ? Type::getInt32Ty(*C) : nullptr;
> -      AsanErrorCallbackSized[AccessIsWrite][Exp] =
> -          checkSanitizerInterfaceFunction(M.getOrInsertFunction(
> -              kAsanReportErrorTemplate + ExpStr + TypeStr + SuffixStr +
> EndingStr,
> -              IRB.getVoidTy(), IntptrTy, IntptrTy, ExpType, nullptr));
> -      AsanMemoryAccessCallbackSized[AccessIsWrite][Exp] =
> -          checkSanitizerInterfaceFunction(M.getOrInsertFunction(
> -              ClMemoryAccessCallbackPrefix + ExpStr + TypeStr + "N" +
> EndingStr,
> -              IRB.getVoidTy(), IntptrTy, IntptrTy, ExpType, nullptr));
> -      for (size_t AccessSizeIndex = 0; AccessSizeIndex <
> kNumberOfAccessSizes;
> -           AccessSizeIndex++) {
> -        const std::string Suffix = TypeStr + itostr(1ULL <<
> AccessSizeIndex);
> -        AsanErrorCallback[AccessIsWrite][Exp][AccessSizeIndex] =
> -            checkSanitizerInterfaceFunction(M.getOrInsertFunction(
> -                kAsanReportErrorTemplate + ExpStr + Suffix + EndingStr,
> -                IRB.getVoidTy(), IntptrTy, ExpType, nullptr));
> -        AsanMemoryAccessCallback[AccessIsWrite][Exp][AccessSizeIndex] =
> -            checkSanitizerInterfaceFunction(M.getOrInsertFunction(
> -                ClMemoryAccessCallbackPrefix + ExpStr + Suffix +
> EndingStr,
> -                IRB.getVoidTy(), IntptrTy, ExpType, nullptr));
> +
> +      SmallVector<Type *, 3> Args2 = {IntptrTy, IntptrTy};
> +      SmallVector<Type *, 2> Args1{1, IntptrTy};
> +      if (Exp) {
> +        Type *ExpType = Type::getInt32Ty(*C);
> +        Args2.push_back(ExpType);
> +        Args1.push_back(ExpType);
>        }
> -    }
> +           AsanErrorCallbackSized[AccessIsWrite][Exp] =
> +               checkSanitizerInterfaceFunction(M.getOrInsertFunction(
> +                   kAsanReportErrorTemplate + ExpStr + TypeStr +
> SuffixStr +
> +                       EndingStr,
> +                   FunctionType::get(IRB.getVoidTy(), Args2, false)));
> +
> +           AsanMemoryAccessCallbackSized[AccessIsWrite][Exp] =
> +               checkSanitizerInterfaceFunction(M.getOrInsertFunction(
> +                   ClMemoryAccessCallbackPrefix + ExpStr + TypeStr + "N"
> + EndingStr,
> +                   FunctionType::get(IRB.getVoidTy(), Args2, false)));
> +
> +           for (size_t AccessSizeIndex = 0; AccessSizeIndex <
> kNumberOfAccessSizes;
> +                AccessSizeIndex++) {
> +             const std::string Suffix = TypeStr + itostr(1ULL <<
> AccessSizeIndex);
> +             AsanErrorCallback[AccessIsWrite][Exp][AccessSizeIndex] =
> +                 checkSanitizerInterfaceFunction(M.getOrInsertFunction(
> +                     kAsanReportErrorTemplate + ExpStr + Suffix +
> EndingStr,
> +                     FunctionType::get(IRB.getVoidTy(), Args1, false)));
> +
> +
>  AsanMemoryAccessCallback[AccessIsWrite][Exp][AccessSizeIndex] =
> +                 checkSanitizerInterfaceFunction(M.getOrInsertFunction(
> +                     ClMemoryAccessCallbackPrefix + ExpStr + Suffix +
> EndingStr,
> +                     FunctionType::get(IRB.getVoidTy(), Args1, false)));
> +           }
> +         }
>    }
>
>    const std::string MemIntrinCallbackPrefix =
>        CompileKernel ? std::string("") : ClMemoryAccessCallbackPrefix;
>    AsanMemmove = checkSanitizerInterfaceFunction(M.getOrInsertFunction(
>        MemIntrinCallbackPrefix + "memmove", IRB.getInt8PtrTy(),
> -      IRB.getInt8PtrTy(), IRB.getInt8PtrTy(), IntptrTy, nullptr));
> +      IRB.getInt8PtrTy(), IRB.getInt8PtrTy(), IntptrTy));
>    AsanMemcpy = checkSanitizerInterfaceFunction(M.getOrInsertFunction(
>        MemIntrinCallbackPrefix + "memcpy", IRB.getInt8PtrTy(),
> -      IRB.getInt8PtrTy(), IRB.getInt8PtrTy(), IntptrTy, nullptr));
> +      IRB.getInt8PtrTy(), IRB.getInt8PtrTy(), IntptrTy));
>    AsanMemset = checkSanitizerInterfaceFunction(M.getOrInsertFunction(
>        MemIntrinCallbackPrefix + "memset", IRB.getInt8PtrTy(),
> -      IRB.getInt8PtrTy(), IRB.getInt32Ty(), IntptrTy, nullptr));
> +      IRB.getInt8PtrTy(), IRB.getInt32Ty(), IntptrTy));
>
>    AsanHandleNoReturnFunc = checkSanitizerInterfaceFunction(
> -      M.getOrInsertFunction(kAsanHandleNoReturnName, IRB.getVoidTy(),
> nullptr));
> +      M.getOrInsertFunction(kAsanHandleNoReturnName, IRB.getVoidTy()));
>
>    AsanPtrCmpFunction =
> checkSanitizerInterfaceFunction(M.getOrInsertFunction(
> -      kAsanPtrCmp, IRB.getVoidTy(), IntptrTy, IntptrTy, nullptr));
> +      kAsanPtrCmp, IRB.getVoidTy(), IntptrTy, IntptrTy));
>    AsanPtrSubFunction =
> checkSanitizerInterfaceFunction(M.getOrInsertFunction(
> -      kAsanPtrSub, IRB.getVoidTy(), IntptrTy, IntptrTy, nullptr));
> +      kAsanPtrSub, IRB.getVoidTy(), IntptrTy, IntptrTy));
>    // We insert an empty inline asm after __asan_report* to avoid callback
> merge.
>    EmptyAsm = InlineAsm::get(FunctionType::get(IRB.getVoidTy(), false),
>                              StringRef(""), StringRef(""),
> @@ -2242,18 +2253,18 @@ void FunctionStackPoisoner::initializeCa
>      std::string Suffix = itostr(i);
>      AsanStackMallocFunc[i] = checkSanitizerInterfaceFunction(
>          M.getOrInsertFunction(kAsanStackMallocNameTemplate + Suffix,
> IntptrTy,
> -                              IntptrTy, nullptr));
> +                              IntptrTy));
>      AsanStackFreeFunc[i] = checkSanitizerInterfaceFunction(
>          M.getOrInsertFunction(kAsanStackFreeNameTemplate + Suffix,
> -                              IRB.getVoidTy(), IntptrTy, IntptrTy,
> nullptr));
> +                              IRB.getVoidTy(), IntptrTy, IntptrTy));
>    }
>    if (ASan.UseAfterScope) {
>      AsanPoisonStackMemoryFunc = checkSanitizerInterfaceFunction(
>          M.getOrInsertFunction(kAsanPoisonStackMemoryName, IRB.getVoidTy(),
> -                              IntptrTy, IntptrTy, nullptr));
> +                              IntptrTy, IntptrTy));
>      AsanUnpoisonStackMemoryFunc = checkSanitizerInterfaceFunction(
>          M.getOrInsertFunction(kAsanUnpoisonStackMemoryName,
> IRB.getVoidTy(),
> -                              IntptrTy, IntptrTy, nullptr));
> +                              IntptrTy, IntptrTy));
>    }
>
>    for (size_t Val : {0x00, 0xf1, 0xf2, 0xf3, 0xf5, 0xf8}) {
> @@ -2262,14 +2273,14 @@ void FunctionStackPoisoner::initializeCa
>      Name << std::setw(2) << std::setfill('0') << std::hex << Val;
>      AsanSetShadowFunc[Val] =
>          checkSanitizerInterfaceFunction(M.getOrInsertFunction(
> -            Name.str(), IRB.getVoidTy(), IntptrTy, IntptrTy, nullptr));
> +            Name.str(), IRB.getVoidTy(), IntptrTy, IntptrTy));
>    }
>
>    AsanAllocaPoisonFunc =
> checkSanitizerInterfaceFunction(M.getOrInsertFunction(
> -      kAsanAllocaPoison, IRB.getVoidTy(), IntptrTy, IntptrTy, nullptr));
> +      kAsanAllocaPoison, IRB.getVoidTy(), IntptrTy, IntptrTy));
>    AsanAllocasUnpoisonFunc =
>        checkSanitizerInterfaceFunction(M.getOrInsertFunction(
> -          kAsanAllocasUnpoison, IRB.getVoidTy(), IntptrTy, IntptrTy,
> nullptr));
> +          kAsanAllocasUnpoison, IRB.getVoidTy(), IntptrTy, IntptrTy));
>  }
>
>  void FunctionStackPoisoner::copyToShadowInline(ArrayRef<uint8_t>
> ShadowMask,
>
> Modified: llvm/trunk/lib/Transforms/Instrumentation/EfficiencySanitizer.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Instrumentation/EfficiencySanitizer.cpp?rev=299949&r1=299948&r2=299949&view=diff
>
> ==============================================================================
> --- llvm/trunk/lib/Transforms/Instrumentation/EfficiencySanitizer.cpp
> (original)
> +++ llvm/trunk/lib/Transforms/Instrumentation/EfficiencySanitizer.cpp Tue
> Apr 11 10:01:18 2017
> @@ -267,35 +267,35 @@ void EfficiencySanitizer::initializeCall
>      SmallString<32> AlignedLoadName("__esan_aligned_load" + ByteSizeStr);
>      EsanAlignedLoad[Idx] =
>          checkSanitizerInterfaceFunction(M.getOrInsertFunction(
> -            AlignedLoadName, IRB.getVoidTy(), IRB.getInt8PtrTy(),
> nullptr));
> +            AlignedLoadName, IRB.getVoidTy(), IRB.getInt8PtrTy()));
>      SmallString<32> AlignedStoreName("__esan_aligned_store" +
> ByteSizeStr);
>      EsanAlignedStore[Idx] =
>          checkSanitizerInterfaceFunction(M.getOrInsertFunction(
> -            AlignedStoreName, IRB.getVoidTy(), IRB.getInt8PtrTy(),
> nullptr));
> +            AlignedStoreName, IRB.getVoidTy(), IRB.getInt8PtrTy()));
>      SmallString<32> UnalignedLoadName("__esan_unaligned_load" +
> ByteSizeStr);
>      EsanUnalignedLoad[Idx] =
>          checkSanitizerInterfaceFunction(M.getOrInsertFunction(
> -            UnalignedLoadName, IRB.getVoidTy(), IRB.getInt8PtrTy(),
> nullptr));
> +            UnalignedLoadName, IRB.getVoidTy(), IRB.getInt8PtrTy()));
>      SmallString<32> UnalignedStoreName("__esan_unaligned_store" +
> ByteSizeStr);
>      EsanUnalignedStore[Idx] =
>          checkSanitizerInterfaceFunction(M.getOrInsertFunction(
> -            UnalignedStoreName, IRB.getVoidTy(), IRB.getInt8PtrTy(),
> nullptr));
> +            UnalignedStoreName, IRB.getVoidTy(), IRB.getInt8PtrTy()));
>    }
>    EsanUnalignedLoadN = checkSanitizerInterfaceFunction(
>        M.getOrInsertFunction("__esan_unaligned_loadN", IRB.getVoidTy(),
> -                            IRB.getInt8PtrTy(), IntptrTy, nullptr));
> +                            IRB.getInt8PtrTy(), IntptrTy));
>    EsanUnalignedStoreN = checkSanitizerInterfaceFunction(
>        M.getOrInsertFunction("__esan_unaligned_storeN", IRB.getVoidTy(),
> -                            IRB.getInt8PtrTy(), IntptrTy, nullptr));
> +                            IRB.getInt8PtrTy(), IntptrTy));
>    MemmoveFn = checkSanitizerInterfaceFunction(
>        M.getOrInsertFunction("memmove", IRB.getInt8PtrTy(),
> IRB.getInt8PtrTy(),
> -                            IRB.getInt8PtrTy(), IntptrTy, nullptr));
> +                            IRB.getInt8PtrTy(), IntptrTy));
>    MemcpyFn = checkSanitizerInterfaceFunction(
>        M.getOrInsertFunction("memcpy", IRB.getInt8PtrTy(),
> IRB.getInt8PtrTy(),
> -                            IRB.getInt8PtrTy(), IntptrTy, nullptr));
> +                            IRB.getInt8PtrTy(), IntptrTy));
>    MemsetFn = checkSanitizerInterfaceFunction(
>        M.getOrInsertFunction("memset", IRB.getInt8PtrTy(),
> IRB.getInt8PtrTy(),
> -                            IRB.getInt32Ty(), IntptrTy, nullptr));
> +                            IRB.getInt32Ty(), IntptrTy));
>  }
>
>  bool EfficiencySanitizer::shouldIgnoreStructType(StructType *StructTy) {
> @@ -533,7 +533,7 @@ void EfficiencySanitizer::createDestruct
>    IRBuilder<> IRB_Dtor(EsanDtorFunction->getEntryBlock().getTerminator());
>    Function *EsanExit = checkSanitizerInterfaceFunction(
>        M.getOrInsertFunction(EsanExitName, IRB_Dtor.getVoidTy(),
> -                            Int8PtrTy, nullptr));
> +                            Int8PtrTy));
>    EsanExit->setLinkage(Function::ExternalLinkage);
>    IRB_Dtor.CreateCall(EsanExit, {ToolInfoArg});
>    appendToGlobalDtors(M, EsanDtorFunction, EsanCtorAndDtorPriority);
>
> Modified: llvm/trunk/lib/Transforms/Instrumentation/MemorySanitizer.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Instrumentation/MemorySanitizer.cpp?rev=299949&r1=299948&r2=299949&view=diff
>
> ==============================================================================
> --- llvm/trunk/lib/Transforms/Instrumentation/MemorySanitizer.cpp
> (original)
> +++ llvm/trunk/lib/Transforms/Instrumentation/MemorySanitizer.cpp Tue Apr
> 11 10:01:18 2017
> @@ -425,7 +425,7 @@ void MemorySanitizer::initializeCallback
>    // which is not yet implemented.
>    StringRef WarningFnName = Recover ? "__msan_warning"
>                                      : "__msan_warning_noreturn";
> -  WarningFn = M.getOrInsertFunction(WarningFnName, IRB.getVoidTy(),
> nullptr);
> +  WarningFn = M.getOrInsertFunction(WarningFnName, IRB.getVoidTy());
>
>    for (size_t AccessSizeIndex = 0; AccessSizeIndex < kNumberOfAccessSizes;
>         AccessSizeIndex++) {
> @@ -433,31 +433,31 @@ void MemorySanitizer::initializeCallback
>      std::string FunctionName = "__msan_maybe_warning_" +
> itostr(AccessSize);
>      MaybeWarningFn[AccessSizeIndex] = M.getOrInsertFunction(
>          FunctionName, IRB.getVoidTy(), IRB.getIntNTy(AccessSize * 8),
> -        IRB.getInt32Ty(), nullptr);
> +        IRB.getInt32Ty());
>
>      FunctionName = "__msan_maybe_store_origin_" + itostr(AccessSize);
>      MaybeStoreOriginFn[AccessSizeIndex] = M.getOrInsertFunction(
>          FunctionName, IRB.getVoidTy(), IRB.getIntNTy(AccessSize * 8),
> -        IRB.getInt8PtrTy(), IRB.getInt32Ty(), nullptr);
> +        IRB.getInt8PtrTy(), IRB.getInt32Ty());
>    }
>
>    MsanSetAllocaOrigin4Fn = M.getOrInsertFunction(
>      "__msan_set_alloca_origin4", IRB.getVoidTy(), IRB.getInt8PtrTy(),
> IntptrTy,
> -    IRB.getInt8PtrTy(), IntptrTy, nullptr);
> +    IRB.getInt8PtrTy(), IntptrTy);
>    MsanPoisonStackFn =
>        M.getOrInsertFunction("__msan_poison_stack", IRB.getVoidTy(),
> -                            IRB.getInt8PtrTy(), IntptrTy, nullptr);
> +                            IRB.getInt8PtrTy(), IntptrTy);
>    MsanChainOriginFn = M.getOrInsertFunction(
> -    "__msan_chain_origin", IRB.getInt32Ty(), IRB.getInt32Ty(), nullptr);
> +    "__msan_chain_origin", IRB.getInt32Ty(), IRB.getInt32Ty());
>    MemmoveFn = M.getOrInsertFunction(
>      "__msan_memmove", IRB.getInt8PtrTy(), IRB.getInt8PtrTy(),
> -    IRB.getInt8PtrTy(), IntptrTy, nullptr);
> +    IRB.getInt8PtrTy(), IntptrTy);
>    MemcpyFn = M.getOrInsertFunction(
>      "__msan_memcpy", IRB.getInt8PtrTy(), IRB.getInt8PtrTy(),
> IRB.getInt8PtrTy(),
> -    IntptrTy, nullptr);
> +    IntptrTy);
>    MemsetFn = M.getOrInsertFunction(
>      "__msan_memset", IRB.getInt8PtrTy(), IRB.getInt8PtrTy(),
> IRB.getInt32Ty(),
> -    IntptrTy, nullptr);
> +    IntptrTy);
>
>    // Create globals.
>    RetvalTLS = new GlobalVariable(
>
> Modified: llvm/trunk/lib/Transforms/Instrumentation/SanitizerCoverage.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Instrumentation/SanitizerCoverage.cpp?rev=299949&r1=299948&r2=299949&view=diff
>
> ==============================================================================
> --- llvm/trunk/lib/Transforms/Instrumentation/SanitizerCoverage.cpp
> (original)
> +++ llvm/trunk/lib/Transforms/Instrumentation/SanitizerCoverage.cpp Tue
> Apr 11 10:01:18 2017
> @@ -262,39 +262,39 @@ bool SanitizerCoverageModule::runOnModul
>    Int32Ty = IRB.getInt32Ty();
>
>    SanCovFunction = checkSanitizerInterfaceFunction(
> -      M.getOrInsertFunction(SanCovName, VoidTy, Int32PtrTy, nullptr));
> +      M.getOrInsertFunction(SanCovName, VoidTy, Int32PtrTy));
>    SanCovWithCheckFunction = checkSanitizerInterfaceFunction(
> -      M.getOrInsertFunction(SanCovWithCheckName, VoidTy, Int32PtrTy,
> nullptr));
> +      M.getOrInsertFunction(SanCovWithCheckName, VoidTy, Int32PtrTy));
>    SanCovTracePCIndir = checkSanitizerInterfaceFunction(
> -      M.getOrInsertFunction(SanCovTracePCIndirName, VoidTy, IntptrTy,
> nullptr));
> +      M.getOrInsertFunction(SanCovTracePCIndirName, VoidTy, IntptrTy));
>    SanCovIndirCallFunction =
>        checkSanitizerInterfaceFunction(M.getOrInsertFunction(
> -          SanCovIndirCallName, VoidTy, IntptrTy, IntptrTy, nullptr));
> +          SanCovIndirCallName, VoidTy, IntptrTy, IntptrTy));
>    SanCovTraceCmpFunction[0] =
>        checkSanitizerInterfaceFunction(M.getOrInsertFunction(
> -          SanCovTraceCmp1, VoidTy, IRB.getInt8Ty(), IRB.getInt8Ty(),
> nullptr));
> +          SanCovTraceCmp1, VoidTy, IRB.getInt8Ty(), IRB.getInt8Ty()));
>    SanCovTraceCmpFunction[1] = checkSanitizerInterfaceFunction(
>        M.getOrInsertFunction(SanCovTraceCmp2, VoidTy, IRB.getInt16Ty(),
> -                            IRB.getInt16Ty(), nullptr));
> +                            IRB.getInt16Ty()));
>    SanCovTraceCmpFunction[2] = checkSanitizerInterfaceFunction(
>        M.getOrInsertFunction(SanCovTraceCmp4, VoidTy, IRB.getInt32Ty(),
> -                            IRB.getInt32Ty(), nullptr));
> +                            IRB.getInt32Ty()));
>    SanCovTraceCmpFunction[3] =
>        checkSanitizerInterfaceFunction(M.getOrInsertFunction(
> -          SanCovTraceCmp8, VoidTy, Int64Ty, Int64Ty, nullptr));
> +          SanCovTraceCmp8, VoidTy, Int64Ty, Int64Ty));
>
>    SanCovTraceDivFunction[0] =
>        checkSanitizerInterfaceFunction(M.getOrInsertFunction(
> -          SanCovTraceDiv4, VoidTy, IRB.getInt32Ty(), nullptr));
> +          SanCovTraceDiv4, VoidTy, IRB.getInt32Ty()));
>    SanCovTraceDivFunction[1] =
>        checkSanitizerInterfaceFunction(M.getOrInsertFunction(
> -          SanCovTraceDiv8, VoidTy, Int64Ty, nullptr));
> +          SanCovTraceDiv8, VoidTy, Int64Ty));
>    SanCovTraceGepFunction =
>        checkSanitizerInterfaceFunction(M.getOrInsertFunction(
> -          SanCovTraceGep, VoidTy, IntptrTy, nullptr));
> +          SanCovTraceGep, VoidTy, IntptrTy));
>    SanCovTraceSwitchFunction =
>        checkSanitizerInterfaceFunction(M.getOrInsertFunction(
> -          SanCovTraceSwitchName, VoidTy, Int64Ty, Int64PtrTy, nullptr));
> +          SanCovTraceSwitchName, VoidTy, Int64Ty, Int64PtrTy));
>
>    // We insert an empty inline asm after cov callbacks to avoid callback
> merge.
>    EmptyAsm = InlineAsm::get(FunctionType::get(IRB.getVoidTy(), false),
> @@ -302,13 +302,13 @@ bool SanitizerCoverageModule::runOnModul
>                              /*hasSideEffects=*/true);
>
>    SanCovTracePC = checkSanitizerInterfaceFunction(
> -      M.getOrInsertFunction(SanCovTracePCName, VoidTy, nullptr));
> +      M.getOrInsertFunction(SanCovTracePCName, VoidTy));
>    SanCovTracePCGuard =
> checkSanitizerInterfaceFunction(M.getOrInsertFunction(
> -      SanCovTracePCGuardName, VoidTy, Int32PtrTy, nullptr));
> +      SanCovTracePCGuardName, VoidTy, Int32PtrTy));
>    SanCovTraceEnter = checkSanitizerInterfaceFunction(
> -      M.getOrInsertFunction(SanCovTraceEnterName, VoidTy, Int32PtrTy,
> nullptr));
> +      M.getOrInsertFunction(SanCovTraceEnterName, VoidTy, Int32PtrTy));
>    SanCovTraceBB = checkSanitizerInterfaceFunction(
> -      M.getOrInsertFunction(SanCovTraceBBName, VoidTy, Int32PtrTy,
> nullptr));
> +      M.getOrInsertFunction(SanCovTraceBBName, VoidTy, Int32PtrTy));
>
>    // At this point we create a dummy array of guards because we don't
>    // know how many elements we will need.
>
> Modified: llvm/trunk/lib/Transforms/Instrumentation/ThreadSanitizer.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Instrumentation/ThreadSanitizer.cpp?rev=299949&r1=299948&r2=299949&view=diff
>
> ==============================================================================
> --- llvm/trunk/lib/Transforms/Instrumentation/ThreadSanitizer.cpp
> (original)
> +++ llvm/trunk/lib/Transforms/Instrumentation/ThreadSanitizer.cpp Tue Apr
> 11 10:01:18 2017
> @@ -160,13 +160,13 @@ void ThreadSanitizer::initializeCallback
>                             Attribute::NoUnwind);
>    // Initialize the callbacks.
>    TsanFuncEntry = checkSanitizerInterfaceFunction(M.getOrInsertFunction(
> -      "__tsan_func_entry", Attr, IRB.getVoidTy(), IRB.getInt8PtrTy(),
> nullptr));
> +      "__tsan_func_entry", Attr, IRB.getVoidTy(), IRB.getInt8PtrTy()));
>    TsanFuncExit = checkSanitizerInterfaceFunction(
> -      M.getOrInsertFunction("__tsan_func_exit", Attr, IRB.getVoidTy(),
> nullptr));
> +      M.getOrInsertFunction("__tsan_func_exit", Attr, IRB.getVoidTy()));
>    TsanIgnoreBegin = checkSanitizerInterfaceFunction(M.getOrInsertFunction(
> -      "__tsan_ignore_thread_begin", Attr, IRB.getVoidTy(), nullptr));
> +      "__tsan_ignore_thread_begin", Attr, IRB.getVoidTy()));
>    TsanIgnoreEnd = checkSanitizerInterfaceFunction(M.getOrInsertFunction(
> -      "__tsan_ignore_thread_end", Attr, IRB.getVoidTy(), nullptr));
> +      "__tsan_ignore_thread_end", Attr, IRB.getVoidTy()));
>    OrdTy = IRB.getInt32Ty();
>    for (size_t i = 0; i < kNumberOfAccessSizes; ++i) {
>      const unsigned ByteSize = 1U << i;
> @@ -175,31 +175,31 @@ void ThreadSanitizer::initializeCallback
>      std::string BitSizeStr = utostr(BitSize);
>      SmallString<32> ReadName("__tsan_read" + ByteSizeStr);
>      TsanRead[i] = checkSanitizerInterfaceFunction(M.getOrInsertFunction(
> -        ReadName, Attr, IRB.getVoidTy(), IRB.getInt8PtrTy(), nullptr));
> +        ReadName, Attr, IRB.getVoidTy(), IRB.getInt8PtrTy()));
>
>      SmallString<32> WriteName("__tsan_write" + ByteSizeStr);
>      TsanWrite[i] = checkSanitizerInterfaceFunction(M.getOrInsertFunction(
> -        WriteName, Attr, IRB.getVoidTy(), IRB.getInt8PtrTy(), nullptr));
> +        WriteName, Attr, IRB.getVoidTy(), IRB.getInt8PtrTy()));
>
>      SmallString<64> UnalignedReadName("__tsan_unaligned_read" +
> ByteSizeStr);
>      TsanUnalignedRead[i] =
>          checkSanitizerInterfaceFunction(M.getOrInsertFunction(
> -            UnalignedReadName, Attr, IRB.getVoidTy(), IRB.getInt8PtrTy(),
> nullptr));
> +            UnalignedReadName, Attr, IRB.getVoidTy(),
> IRB.getInt8PtrTy()));
>
>      SmallString<64> UnalignedWriteName("__tsan_unaligned_write" +
> ByteSizeStr);
>      TsanUnalignedWrite[i] =
>          checkSanitizerInterfaceFunction(M.getOrInsertFunction(
> -            UnalignedWriteName, Attr, IRB.getVoidTy(),
> IRB.getInt8PtrTy(), nullptr));
> +            UnalignedWriteName, Attr, IRB.getVoidTy(),
> IRB.getInt8PtrTy()));
>
>      Type *Ty = Type::getIntNTy(M.getContext(), BitSize);
>      Type *PtrTy = Ty->getPointerTo();
>      SmallString<32> AtomicLoadName("__tsan_atomic" + BitSizeStr +
> "_load");
>      TsanAtomicLoad[i] = checkSanitizerInterfaceFunction(
> -        M.getOrInsertFunction(AtomicLoadName, Attr, Ty, PtrTy, OrdTy,
> nullptr));
> +        M.getOrInsertFunction(AtomicLoadName, Attr, Ty, PtrTy, OrdTy));
>
>      SmallString<32> AtomicStoreName("__tsan_atomic" + BitSizeStr +
> "_store");
>      TsanAtomicStore[i] =
> checkSanitizerInterfaceFunction(M.getOrInsertFunction(
> -        AtomicStoreName, Attr, IRB.getVoidTy(), PtrTy, Ty, OrdTy,
> nullptr));
> +        AtomicStoreName, Attr, IRB.getVoidTy(), PtrTy, Ty, OrdTy));
>
>      for (int op = AtomicRMWInst::FIRST_BINOP;
>          op <= AtomicRMWInst::LAST_BINOP; ++op) {
> @@ -223,33 +223,33 @@ void ThreadSanitizer::initializeCallback
>          continue;
>        SmallString<32> RMWName("__tsan_atomic" + itostr(BitSize) +
> NamePart);
>        TsanAtomicRMW[op][i] = checkSanitizerInterfaceFunction(
> -          M.getOrInsertFunction(RMWName, Attr, Ty, PtrTy, Ty, OrdTy,
> nullptr));
> +          M.getOrInsertFunction(RMWName, Attr, Ty, PtrTy, Ty, OrdTy));
>      }
>
>      SmallString<32> AtomicCASName("__tsan_atomic" + BitSizeStr +
>                                    "_compare_exchange_val");
>      TsanAtomicCAS[i] =
> checkSanitizerInterfaceFunction(M.getOrInsertFunction(
> -        AtomicCASName, Attr, Ty, PtrTy, Ty, Ty, OrdTy, OrdTy, nullptr));
> +        AtomicCASName, Attr, Ty, PtrTy, Ty, Ty, OrdTy, OrdTy));
>    }
>    TsanVptrUpdate = checkSanitizerInterfaceFunction(
>        M.getOrInsertFunction("__tsan_vptr_update", Attr, IRB.getVoidTy(),
> -                            IRB.getInt8PtrTy(), IRB.getInt8PtrTy(),
> nullptr));
> +                            IRB.getInt8PtrTy(), IRB.getInt8PtrTy()));
>    TsanVptrLoad = checkSanitizerInterfaceFunction(M.getOrInsertFunction(
> -      "__tsan_vptr_read", Attr, IRB.getVoidTy(), IRB.getInt8PtrTy(),
> nullptr));
> +      "__tsan_vptr_read", Attr, IRB.getVoidTy(), IRB.getInt8PtrTy()));
>    TsanAtomicThreadFence =
> checkSanitizerInterfaceFunction(M.getOrInsertFunction(
> -      "__tsan_atomic_thread_fence", Attr, IRB.getVoidTy(), OrdTy,
> nullptr));
> +      "__tsan_atomic_thread_fence", Attr, IRB.getVoidTy(), OrdTy));
>    TsanAtomicSignalFence =
> checkSanitizerInterfaceFunction(M.getOrInsertFunction(
> -      "__tsan_atomic_signal_fence", Attr, IRB.getVoidTy(), OrdTy,
> nullptr));
> +      "__tsan_atomic_signal_fence", Attr, IRB.getVoidTy(), OrdTy));
>
>    MemmoveFn = checkSanitizerInterfaceFunction(
>        M.getOrInsertFunction("memmove", Attr, IRB.getInt8PtrTy(),
> IRB.getInt8PtrTy(),
> -                            IRB.getInt8PtrTy(), IntptrTy, nullptr));
> +                            IRB.getInt8PtrTy(), IntptrTy));
>    MemcpyFn = checkSanitizerInterfaceFunction(
>        M.getOrInsertFunction("memcpy", Attr, IRB.getInt8PtrTy(),
> IRB.getInt8PtrTy(),
> -                            IRB.getInt8PtrTy(), IntptrTy, nullptr));
> +                            IRB.getInt8PtrTy(), IntptrTy));
>    MemsetFn = checkSanitizerInterfaceFunction(
>        M.getOrInsertFunction("memset", Attr, IRB.getInt8PtrTy(),
> IRB.getInt8PtrTy(),
> -                            IRB.getInt32Ty(), IntptrTy, nullptr));
> +                            IRB.getInt32Ty(), IntptrTy));
>  }
>
>  bool ThreadSanitizer::doInitialization(Module &M) {
>
> Modified: llvm/trunk/lib/Transforms/Scalar/LoopIdiomRecognize.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Scalar/LoopIdiomRecognize.cpp?rev=299949&r1=299948&r2=299949&view=diff
>
> ==============================================================================
> --- llvm/trunk/lib/Transforms/Scalar/LoopIdiomRecognize.cpp (original)
> +++ llvm/trunk/lib/Transforms/Scalar/LoopIdiomRecognize.cpp Tue Apr 11
> 10:01:18 2017
> @@ -823,7 +823,7 @@ bool LoopIdiomRecognize::processLoopStri
>      Module *M = TheStore->getModule();
>      Value *MSP =
>          M->getOrInsertFunction("memset_pattern16", Builder.getVoidTy(),
> -                               Int8PtrTy, Int8PtrTy, IntPtr, (void
> *)nullptr);
> +                               Int8PtrTy, Int8PtrTy, IntPtr);
>      inferLibFuncAttributes(*M->getFunction("memset_pattern16"), *TLI);
>
>      // Otherwise we should form a memset_pattern16.  PatternValue is
> known to be
>
> Modified: llvm/trunk/lib/Transforms/Utils/BuildLibCalls.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Utils/BuildLibCalls.cpp?rev=299949&r1=299948&r2=299949&view=diff
>
> ==============================================================================
> --- llvm/trunk/lib/Transforms/Utils/BuildLibCalls.cpp (original)
> +++ llvm/trunk/lib/Transforms/Utils/BuildLibCalls.cpp Tue Apr 11 10:01:18
> 2017
> @@ -723,7 +723,7 @@ Value *llvm::emitStrLen(Value *Ptr, IRBu
>    Module *M = B.GetInsertBlock()->getModule();
>    LLVMContext &Context = B.GetInsertBlock()->getContext();
>    Constant *StrLen = M->getOrInsertFunction("strlen",
> DL.getIntPtrType(Context),
> -                                            B.getInt8PtrTy(), nullptr);
> +                                            B.getInt8PtrTy());
>    inferLibFuncAttributes(*M->getFunction("strlen"), *TLI);
>    CallInst *CI = B.CreateCall(StrLen, castToCStr(Ptr, B), "strlen");
>    if (const Function *F = dyn_cast<Function>(StrLen->stripPointerCasts()))
> @@ -741,7 +741,7 @@ Value *llvm::emitStrChr(Value *Ptr, char
>    Type *I8Ptr = B.getInt8PtrTy();
>    Type *I32Ty = B.getInt32Ty();
>    Constant *StrChr =
> -      M->getOrInsertFunction("strchr", I8Ptr, I8Ptr, I32Ty, nullptr);
> +      M->getOrInsertFunction("strchr", I8Ptr, I8Ptr, I32Ty);
>    inferLibFuncAttributes(*M->getFunction("strchr"), *TLI);
>    CallInst *CI = B.CreateCall(
>        StrChr, {castToCStr(Ptr, B), ConstantInt::get(I32Ty, C)}, "strchr");
> @@ -759,7 +759,7 @@ Value *llvm::emitStrNCmp(Value *Ptr1, Va
>    LLVMContext &Context = B.GetInsertBlock()->getContext();
>    Value *StrNCmp = M->getOrInsertFunction("strncmp", B.getInt32Ty(),
>                                            B.getInt8PtrTy(),
> B.getInt8PtrTy(),
> -                                          DL.getIntPtrType(Context),
> nullptr);
> +                                          DL.getIntPtrType(Context));
>    inferLibFuncAttributes(*M->getFunction("strncmp"), *TLI);
>    CallInst *CI = B.CreateCall(
>        StrNCmp, {castToCStr(Ptr1, B), castToCStr(Ptr2, B), Len},
> "strncmp");
> @@ -777,7 +777,7 @@ Value *llvm::emitStrCpy(Value *Dst, Valu
>
>    Module *M = B.GetInsertBlock()->getModule();
>    Type *I8Ptr = B.getInt8PtrTy();
> -  Value *StrCpy = M->getOrInsertFunction(Name, I8Ptr, I8Ptr, I8Ptr,
> nullptr);
> +  Value *StrCpy = M->getOrInsertFunction(Name, I8Ptr, I8Ptr, I8Ptr);
>    inferLibFuncAttributes(*M->getFunction(Name), *TLI);
>    CallInst *CI =
>        B.CreateCall(StrCpy, {castToCStr(Dst, B), castToCStr(Src, B)},
> Name);
> @@ -794,7 +794,7 @@ Value *llvm::emitStrNCpy(Value *Dst, Val
>    Module *M = B.GetInsertBlock()->getModule();
>    Type *I8Ptr = B.getInt8PtrTy();
>    Value *StrNCpy = M->getOrInsertFunction(Name, I8Ptr, I8Ptr, I8Ptr,
> -                                          Len->getType(), nullptr);
> +                                          Len->getType());
>    inferLibFuncAttributes(*M->getFunction(Name), *TLI);
>    CallInst *CI = B.CreateCall(
>        StrNCpy, {castToCStr(Dst, B), castToCStr(Src, B), Len}, "strncpy");
> @@ -817,7 +817,7 @@ Value *llvm::emitMemCpyChk(Value *Dst, V
>    Value *MemCpy = M->getOrInsertFunction(
>        "__memcpy_chk", AttributeList::get(M->getContext(), AS),
> B.getInt8PtrTy(),
>        B.getInt8PtrTy(), B.getInt8PtrTy(), DL.getIntPtrType(Context),
> -      DL.getIntPtrType(Context), nullptr);
> +      DL.getIntPtrType(Context));
>    Dst = castToCStr(Dst, B);
>    Src = castToCStr(Src, B);
>    CallInst *CI = B.CreateCall(MemCpy, {Dst, Src, Len, ObjSize});
> @@ -835,7 +835,7 @@ Value *llvm::emitMemChr(Value *Ptr, Valu
>    LLVMContext &Context = B.GetInsertBlock()->getContext();
>    Value *MemChr = M->getOrInsertFunction("memchr", B.getInt8PtrTy(),
>                                           B.getInt8PtrTy(), B.getInt32Ty(),
> -                                         DL.getIntPtrType(Context),
> nullptr);
> +                                         DL.getIntPtrType(Context));
>    inferLibFuncAttributes(*M->getFunction("memchr"), *TLI);
>    CallInst *CI = B.CreateCall(MemChr, {castToCStr(Ptr, B), Val, Len},
> "memchr");
>
> @@ -854,7 +854,7 @@ Value *llvm::emitMemCmp(Value *Ptr1, Val
>    LLVMContext &Context = B.GetInsertBlock()->getContext();
>    Value *MemCmp = M->getOrInsertFunction("memcmp", B.getInt32Ty(),
>                                           B.getInt8PtrTy(),
> B.getInt8PtrTy(),
> -                                         DL.getIntPtrType(Context),
> nullptr);
> +                                         DL.getIntPtrType(Context));
>    inferLibFuncAttributes(*M->getFunction("memcmp"), *TLI);
>    CallInst *CI = B.CreateCall(
>        MemCmp, {castToCStr(Ptr1, B), castToCStr(Ptr2, B), Len}, "memcmp");
> @@ -887,7 +887,7 @@ Value *llvm::emitUnaryFloatFnCall(Value
>
>    Module *M = B.GetInsertBlock()->getModule();
>    Value *Callee = M->getOrInsertFunction(Name, Op->getType(),
> -                                         Op->getType(), nullptr);
> +                                         Op->getType());
>    CallInst *CI = B.CreateCall(Callee, Op, Name);
>    CI->setAttributes(Attrs);
>    if (const Function *F = dyn_cast<Function>(Callee->stripPointerCasts()))
> @@ -903,7 +903,7 @@ Value *llvm::emitBinaryFloatFnCall(Value
>
>    Module *M = B.GetInsertBlock()->getModule();
>    Value *Callee = M->getOrInsertFunction(Name, Op1->getType(),
> Op1->getType(),
> -                                         Op2->getType(), nullptr);
> +                                         Op2->getType());
>    CallInst *CI = B.CreateCall(Callee, {Op1, Op2}, Name);
>    CI->setAttributes(Attrs);
>    if (const Function *F = dyn_cast<Function>(Callee->stripPointerCasts()))
> @@ -918,8 +918,7 @@ Value *llvm::emitPutChar(Value *Char, IR
>      return nullptr;
>
>    Module *M = B.GetInsertBlock()->getModule();
> -  Value *PutChar = M->getOrInsertFunction("putchar", B.getInt32Ty(),
> -                                          B.getInt32Ty(), nullptr);
> +  Value *PutChar = M->getOrInsertFunction("putchar", B.getInt32Ty(),
> B.getInt32Ty());
>    inferLibFuncAttributes(*M->getFunction("putchar"), *TLI);
>    CallInst *CI = B.CreateCall(PutChar,
>                                B.CreateIntCast(Char,
> @@ -940,7 +939,7 @@ Value *llvm::emitPutS(Value *Str, IRBuil
>
>    Module *M = B.GetInsertBlock()->getModule();
>    Value *PutS =
> -      M->getOrInsertFunction("puts", B.getInt32Ty(), B.getInt8PtrTy(),
> nullptr);
> +      M->getOrInsertFunction("puts", B.getInt32Ty(), B.getInt8PtrTy());
>    inferLibFuncAttributes(*M->getFunction("puts"), *TLI);
>    CallInst *CI = B.CreateCall(PutS, castToCStr(Str, B), "puts");
>    if (const Function *F = dyn_cast<Function>(PutS->stripPointerCasts()))
> @@ -955,7 +954,7 @@ Value *llvm::emitFPutC(Value *Char, Valu
>
>    Module *M = B.GetInsertBlock()->getModule();
>    Constant *F = M->getOrInsertFunction("fputc", B.getInt32Ty(),
> B.getInt32Ty(),
> -                                       File->getType(), nullptr);
> +                                       File->getType());
>    if (File->getType()->isPointerTy())
>      inferLibFuncAttributes(*M->getFunction("fputc"), *TLI);
>    Char = B.CreateIntCast(Char, B.getInt32Ty(), /*isSigned*/true,
> @@ -975,7 +974,7 @@ Value *llvm::emitFPutS(Value *Str, Value
>    Module *M = B.GetInsertBlock()->getModule();
>    StringRef FPutsName = TLI->getName(LibFunc_fputs);
>    Constant *F = M->getOrInsertFunction(
> -      FPutsName, B.getInt32Ty(), B.getInt8PtrTy(), File->getType(),
> nullptr);
> +      FPutsName, B.getInt32Ty(), B.getInt8PtrTy(), File->getType());
>    if (File->getType()->isPointerTy())
>      inferLibFuncAttributes(*M->getFunction(FPutsName), *TLI);
>    CallInst *CI = B.CreateCall(F, {castToCStr(Str, B), File}, "fputs");
> @@ -995,8 +994,8 @@ Value *llvm::emitFWrite(Value *Ptr, Valu
>    StringRef FWriteName = TLI->getName(LibFunc_fwrite);
>    Constant *F = M->getOrInsertFunction(
>        FWriteName, DL.getIntPtrType(Context), B.getInt8PtrTy(),
> -      DL.getIntPtrType(Context), DL.getIntPtrType(Context),
> File->getType(),
> -      nullptr);
> +      DL.getIntPtrType(Context), DL.getIntPtrType(Context),
> File->getType());
> +
>    if (File->getType()->isPointerTy())
>      inferLibFuncAttributes(*M->getFunction(FWriteName), *TLI);
>    CallInst *CI =
>
> Modified: llvm/trunk/lib/Transforms/Utils/SimplifyLibCalls.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Utils/SimplifyLibCalls.cpp?rev=299949&r1=299948&r2=299949&view=diff
>
> ==============================================================================
> --- llvm/trunk/lib/Transforms/Utils/SimplifyLibCalls.cpp (original)
> +++ llvm/trunk/lib/Transforms/Utils/SimplifyLibCalls.cpp Tue Apr 11
> 10:01:18 2017
> @@ -819,7 +819,7 @@ static Value *emitCalloc(Value *Num, Val
>    const DataLayout &DL = M->getDataLayout();
>    IntegerType *PtrType =
> DL.getIntPtrType((B.GetInsertBlock()->getContext()));
>    Value *Calloc = M->getOrInsertFunction("calloc", Attrs,
> B.getInt8PtrTy(),
> -                                         PtrType, PtrType, nullptr);
> +
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20170417/f14fd378/attachment.html>


More information about the llvm-commits mailing list