[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