mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2026-04-25 21:18:19 +00:00
New feature: add support for target intrinsics being defined in the
target directories themselves. This also means that VMCore no longer needs to know about every target's list of intrinsics. Future work will include converting the PowerPC target to this interface as an example implementation. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63765 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user