diff options
author | Dale Johannesen <dalej@apple.com> | 2009-02-05 01:49:45 +0000 |
---|---|---|
committer | Dale Johannesen <dalej@apple.com> | 2009-02-05 01:49:45 +0000 |
commit | b842d529a36a3449b0b3affa389cdcd8eb97e4c0 (patch) | |
tree | df9466ae4a9ad33771459b11776f2380c2e3b133 /llvm/lib/VMCore/Module.cpp | |
parent | 0103574d5500e9a3026aa48083e6dcd723387cc0 (diff) | |
download | bcm5719-llvm-b842d529a36a3449b0b3affa389cdcd8eb97e4c0.tar.gz bcm5719-llvm-b842d529a36a3449b0b3affa389cdcd8eb97e4c0.zip |
Reapply 63765. Patches for clang and llvm-gcc to follow.
llvm-svn: 63812
Diffstat (limited to 'llvm/lib/VMCore/Module.cpp')
-rw-r--r-- | llvm/lib/VMCore/Module.cpp | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/llvm/lib/VMCore/Module.cpp b/llvm/lib/VMCore/Module.cpp index ef94796b242..896245d69e6 100644 --- a/llvm/lib/VMCore/Module.cpp +++ b/llvm/lib/VMCore/Module.cpp @@ -171,6 +171,25 @@ Constant *Module::getOrInsertFunction(const std::string &Name, return F; } +Constant *Module::getOrInsertTargetIntrinsic(const std::string &Name, + const FunctionType *Ty, + AttrListPtr AttributeList) { + ValueSymbolTable &SymTab = getValueSymbolTable(); + + // See if we have a definition for the specified function already. + GlobalValue *F = dyn_cast_or_null<GlobalValue>(SymTab.lookup(Name)); + if (F == 0) { + // Nope, add it + Function *New = Function::Create(Ty, GlobalVariable::ExternalLinkage, Name); + New->setAttributes(AttributeList); + FunctionList.push_back(New); + return New; // Return the new prototype. + } + + // Otherwise, we just found the existing function or a prototype. + return F; +} + Constant *Module::getOrInsertFunction(const std::string &Name, const FunctionType *Ty) { AttrListPtr AttributeList = AttrListPtr::get((AttributeWithIndex *)0, 0); |