From e2c4304654442ca353b307d73c86dce2a4acadbf Mon Sep 17 00:00:00 2001 From: Duncan Sands Date: Mon, 7 Apr 2008 13:45:04 +0000 Subject: [PATCH] Use Intrinsic::getDeclaration in more places. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49338 91177308-0d34-0410-b5e6-96231b3b80d8 --- examples/BrainF/BrainF.cpp | 7 ++--- lib/Transforms/IPO/SimplifyLibCalls.cpp | 28 +++++-------------- .../Instrumentation/RSProfiling.cpp | 3 +- tools/llvm-upgrade/UpgradeParser.y | 17 +++++------ 4 files changed, 18 insertions(+), 37 deletions(-) diff --git a/examples/BrainF/BrainF.cpp b/examples/BrainF/BrainF.cpp index b2959f20001..3717ee70362 100644 --- a/examples/BrainF/BrainF.cpp +++ b/examples/BrainF/BrainF.cpp @@ -25,6 +25,7 @@ #include "BrainF.h" #include "llvm/Constants.h" +#include "llvm/Intrinsics.h" #include "llvm/ADT/STLExtras.h" using namespace llvm; @@ -52,11 +53,7 @@ void BrainF::header() { //Function prototypes //declare void @llvm.memset.i32(i8 *, i8, i32, i32) - Function *memset_func = cast(module-> - getOrInsertFunction("llvm.memset.i32", Type::VoidTy, - PointerType::getUnqual(IntegerType::Int8Ty), - IntegerType::Int8Ty, IntegerType::Int32Ty, - IntegerType::Int32Ty, NULL)); + Function *memset_func = Intrinsic::getDeclaration(module, Intrinsic::memset_i32); //declare i32 @getchar() getchar_func = cast(module-> diff --git a/lib/Transforms/IPO/SimplifyLibCalls.cpp b/lib/Transforms/IPO/SimplifyLibCalls.cpp index bbfd1d2da34..ed32daa3988 100644 --- a/lib/Transforms/IPO/SimplifyLibCalls.cpp +++ b/lib/Transforms/IPO/SimplifyLibCalls.cpp @@ -21,6 +21,7 @@ #include "llvm/Constants.h" #include "llvm/DerivedTypes.h" #include "llvm/Instructions.h" +#include "llvm/Intrinsics.h" #include "llvm/Module.h" #include "llvm/Pass.h" #include "llvm/ADT/StringMap.h" @@ -320,12 +321,9 @@ public: /// @brief Return a Function* for the memcpy libcall Constant *get_memcpy() { if (!memcpy_func) { - const Type *SBP = PointerType::getUnqual(Type::Int8Ty); - const char *N = TD->getIntPtrType() == Type::Int32Ty ? - "llvm.memcpy.i32" : "llvm.memcpy.i64"; - memcpy_func = M->getOrInsertFunction(N, Type::VoidTy, SBP, SBP, - TD->getIntPtrType(), Type::Int32Ty, - NULL); + Intrinsic::ID IID = (TD->getIntPtrType() == Type::Int32Ty) ? + Intrinsic::memcpy_i32 : Intrinsic::memcpy_i64; + memcpy_func = Intrinsic::getDeclaration(M, IID); } return memcpy_func; } @@ -1696,23 +1694,11 @@ public: // ffsl(x) -> x == 0 ? 0 : llvm.cttz(x)+1 // ffsll(x) -> x == 0 ? 0 : llvm.cttz(x)+1 const Type *ArgType = TheCall->getOperand(1)->getType(); - const char *CTTZName; assert(ArgType->getTypeID() == Type::IntegerTyID && "llvm.cttz argument is not an integer?"); - unsigned BitWidth = cast(ArgType)->getBitWidth(); - if (BitWidth == 8) - CTTZName = "llvm.cttz.i8"; - else if (BitWidth == 16) - CTTZName = "llvm.cttz.i16"; - else if (BitWidth == 32) - CTTZName = "llvm.cttz.i32"; - else { - assert(BitWidth == 64 && "Unknown bitwidth"); - CTTZName = "llvm.cttz.i64"; - } - - Constant *F = SLC.getModule()->getOrInsertFunction(CTTZName, ArgType, - ArgType, NULL); + Constant *F = Intrinsic::getDeclaration(SLC.getModule(), + Intrinsic::cttz, &ArgType, 1); + Value *V = CastInst::createIntegerCast(TheCall->getOperand(1), ArgType, false/*ZExt*/, "tmp", TheCall); Value *V2 = CallInst::Create(F, V, "tmp", TheCall); diff --git a/lib/Transforms/Instrumentation/RSProfiling.cpp b/lib/Transforms/Instrumentation/RSProfiling.cpp index e7e8efea882..15249c2e1ac 100644 --- a/lib/Transforms/Instrumentation/RSProfiling.cpp +++ b/lib/Transforms/Instrumentation/RSProfiling.cpp @@ -37,6 +37,7 @@ #include "llvm/Instructions.h" #include "llvm/Constants.h" #include "llvm/DerivedTypes.h" +#include "llvm/Intrinsics.h" #include "llvm/Transforms/Scalar.h" #include "llvm/Transforms/Utils/BasicBlockUtils.h" #include "llvm/Support/CommandLine.h" @@ -301,7 +302,7 @@ void GlobalRandomCounterOpt::ProcessChoicePoint(BasicBlock* bb) { CycleCounter::CycleCounter(Module& m, uint64_t resetmask) : rm(resetmask) { - F = m.getOrInsertFunction("llvm.readcyclecounter", Type::Int64Ty, NULL); + F = Intrinsic::getDeclaration(&m, Intrinsic::readcyclecounter); } CycleCounter::~CycleCounter() {} diff --git a/tools/llvm-upgrade/UpgradeParser.y b/tools/llvm-upgrade/UpgradeParser.y index 39172c36571..3eb00617f35 100644 --- a/tools/llvm-upgrade/UpgradeParser.y +++ b/tools/llvm-upgrade/UpgradeParser.y @@ -1593,8 +1593,7 @@ Module* UpgradeAssembly(const std::string &infile, std::istream& in, const Type* RetTy = Type::getPrimitiveType(Type::VoidTyID); const Type* ArgTy = F->getFunctionType()->getReturnType(); const Type* ArgTyPtr = PointerType::getUnqual(ArgTy); - Function* NF = cast(Result->getOrInsertFunction( - "llvm.va_start", RetTy, ArgTyPtr, (Type *)0)); + Function* NF = Intrinsic::getDeclaration(Result, Intrinsic::va_start); while (!F->use_empty()) { CallInst* CI = cast(F->use_back()); @@ -1620,8 +1619,7 @@ Module* UpgradeAssembly(const std::string &infile, std::istream& in, const Type* RetTy = Type::getPrimitiveType(Type::VoidTyID); const Type* ArgTy = F->getFunctionType()->getParamType(0); const Type* ArgTyPtr = PointerType::getUnqual(ArgTy); - Function* NF = cast(Result->getOrInsertFunction( - "llvm.va_end", RetTy, ArgTyPtr, (Type *)0)); + Function* NF = Intrinsic::getDeclaration(Result, Intrinsic::va_end); while (!F->use_empty()) { CallInst* CI = cast(F->use_back()); @@ -1649,8 +1647,7 @@ Module* UpgradeAssembly(const std::string &infile, std::istream& in, const Type* RetTy = Type::getPrimitiveType(Type::VoidTyID); const Type* ArgTy = F->getFunctionType()->getReturnType(); const Type* ArgTyPtr = PointerType::getUnqual(ArgTy); - Function* NF = cast(Result->getOrInsertFunction( - "llvm.va_copy", RetTy, ArgTyPtr, ArgTyPtr, (Type *)0)); + Function* NF = Intrinsic::getDeclaration(Result, Intrinsic::va_copy); while (!F->use_empty()) { CallInst* CI = cast(F->use_back()); @@ -3551,8 +3548,8 @@ InstVal const Type* ArgTy = $2.V->getType(); const Type* DstTy = $4.PAT->get(); ObsoleteVarArgs = true; - Function* NF = cast(CurModule.CurrentModule-> - getOrInsertFunction("llvm.va_copy", ArgTy, ArgTy, (Type *)0)); + Function* NF = Intrinsic::getDeclaration(CurModule.CurrentModule, + Intrinsic::va_copy); //b = vaarg a, t -> //foo = alloca 1 of t @@ -3572,8 +3569,8 @@ InstVal const Type* ArgTy = $2.V->getType(); const Type* DstTy = $4.PAT->get(); ObsoleteVarArgs = true; - Function* NF = cast(CurModule.CurrentModule-> - getOrInsertFunction("llvm.va_copy", ArgTy, ArgTy, (Type *)0)); + Function* NF = Intrinsic::getDeclaration(CurModule.CurrentModule, + Intrinsic::va_copy); //b = vanext a, t -> //foo = alloca 1 of t -- 2.34.1