diff options
Diffstat (limited to 'lib/Target/CBackend/Writer.cpp')
| -rw-r--r-- | lib/Target/CBackend/Writer.cpp | 9 | 
1 files changed, 6 insertions, 3 deletions
diff --git a/lib/Target/CBackend/Writer.cpp b/lib/Target/CBackend/Writer.cpp index e32987cbd2..0fd3046021 100644 --- a/lib/Target/CBackend/Writer.cpp +++ b/lib/Target/CBackend/Writer.cpp @@ -653,6 +653,7 @@ void CWriter::printModule(Module *M) {        if ((I->hasInternalLinkage() || !MangledGlobals.count(I)) &&            !I->getIntrinsicID()) {          printFunctionSignature(I, true); +        if (I->hasWeakLinkage()) Out << " __attribute__((weak))";          Out << ";\n";        }      } @@ -671,7 +672,11 @@ void CWriter::printModule(Module *M) {        if (!I->isExternal()) {          Out << "extern ";          printType(Out, I->getType()->getElementType(), Mang->getValueName(I)); -       + +        if (I->hasLinkOnceLinkage()) +          Out << " __attribute__((common))"; +        else if (I->hasWeakLinkage()) +          Out << " __attribute__((weak))";          Out << ";\n";        }    } @@ -903,8 +908,6 @@ void CWriter::printFunctionSignature(const Function *F, bool Prototype) {    FunctionInnards << ")";    // Print out the return type and the entire signature for that matter    printType(Out, F->getReturnType(), FunctionInnards.str()); - -  if (F->hasWeakLinkage()) Out << " __attribute((weak))";  }  void CWriter::printFunction(Function *F) {  | 
