We need to propagate the debug location information even when dealing with the
[oota-llvm.git] / lib / VMCore / Module.cpp
index ef94796b24285df3b317bbf876300709ecae0a48..896245d69e6754cb2b21cb9304f7b164fcc00c05 100644 (file)
@@ -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);