Merge pull request #189 from guanqun/fix-extern-c-error

calls to C/C++ functions should not be mangled.
This commit is contained in:
Matt Pharr
2012-03-20 05:55:09 -07:00

View File

@@ -501,10 +501,14 @@ Module::AddFunctionDeclaration(Symbol *funSym, bool isInline) {
llvm::GlobalValue::LinkageTypes linkage = (funSym->storageClass == SC_STATIC ||
isInline) ?
llvm::GlobalValue::InternalLinkage : llvm::GlobalValue::ExternalLinkage;
std::string functionName = ((funSym->storageClass == SC_EXTERN_C) ?
funSym->name : funSym->MangledName());
if (g->mangleFunctionsWithTarget)
functionName += g->target.GetISAString();
std::string functionName;
if (funSym->storageClass == SC_EXTERN_C)
functionName = funSym->name;
else {
functionName = funSym->MangledName();
if (g->mangleFunctionsWithTarget)
functionName += g->target.GetISAString();
}
llvm::Function *function =
llvm::Function::Create(llvmFunctionType, linkage, functionName.c_str(),
module);