diff options
author | Rafael Espindola <rafael.espindola@gmail.com> | 2014-02-07 16:07:11 +0000 |
---|---|---|
committer | Rafael Espindola <rafael.espindola@gmail.com> | 2014-02-07 16:07:11 +0000 |
commit | a005342db304e7a7bdb5ebe5d1d4dcffe53e37c2 (patch) | |
tree | ee8c156e0e2943c41a17f7e8015cca3b2e96d2e8 /llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp | |
parent | 2febd212d3528b4bdebd545e7d5883bfaa1d8d89 (diff) | |
download | bcm5719-llvm-a005342db304e7a7bdb5ebe5d1d4dcffe53e37c2.tar.gz bcm5719-llvm-a005342db304e7a7bdb5ebe5d1d4dcffe53e37c2.zip |
Refactor logic into a function predicate.
No functionality change.
llvm-svn: 200976
Diffstat (limited to 'llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp')
-rw-r--r-- | llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp | 33 |
1 files changed, 19 insertions, 14 deletions
diff --git a/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp b/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp index d84826f5fcc..141a6686304 100644 --- a/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp +++ b/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp @@ -234,6 +234,24 @@ bool AsmPrinter::doInitialization(Module &M) { return false; } +static bool canBeHidden(const GlobalValue *GV, const MCAsmInfo &MAI) { + GlobalValue::LinkageTypes Linkage = GV->getLinkage(); + if (Linkage != GlobalValue::LinkOnceODRLinkage) + return false; + + if (!MAI.hasWeakDefCanBeHiddenDirective()) + return false; + + if (GV->hasUnnamedAddr()) + return true; + + GlobalStatus GS; + if (!GlobalStatus::analyzeGlobal(GV, GS) && !GS.IsCompared) + return true; + + return false; +} + void AsmPrinter::EmitLinkage(const GlobalValue *GV, MCSymbol *GVSym) const { GlobalValue::LinkageTypes Linkage = GV->getLinkage(); switch (Linkage) { @@ -247,20 +265,7 @@ void AsmPrinter::EmitLinkage(const GlobalValue *GV, MCSymbol *GVSym) const { // .globl _foo OutStreamer.EmitSymbolAttribute(GVSym, MCSA_Global); - bool CanBeHidden = false; - - if (Linkage == GlobalValue::LinkOnceODRLinkage && - MAI->hasWeakDefCanBeHiddenDirective()) { - if (GV->hasUnnamedAddr()) { - CanBeHidden = true; - } else { - GlobalStatus GS; - if (!GlobalStatus::analyzeGlobal(GV, GS) && !GS.IsCompared) - CanBeHidden = true; - } - } - - if (!CanBeHidden) + if (!canBeHidden(GV, *MAI)) // .weak_definition _foo OutStreamer.EmitSymbolAttribute(GVSym, MCSA_WeakDefinition); else |