diff options
author | Dale Johannesen <dalej@apple.com> | 2008-09-09 22:29:13 +0000 |
---|---|---|
committer | Dale Johannesen <dalej@apple.com> | 2008-09-09 22:29:13 +0000 |
commit | d2e51af0358b571367a9f1e5175b87e9dd72edf8 (patch) | |
tree | 829af1ac09fe4d71385f4e3370c0854d79bbb7e8 /lib/CodeGen/AsmPrinter/AsmPrinter.cpp | |
parent | b4ec2830499b8c3c5e0de56a2620fb2b21c88b9e (diff) |
Move the uglier parts of deciding not to emit a
UsedDirective for some symbols in llvm.used into
Darwin-specific code. I've decided LessPrivateGlobal
is potentially a useful abstraction and left it in
the target-independent area, with improved comment.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56024 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/CodeGen/AsmPrinter/AsmPrinter.cpp')
-rw-r--r-- | lib/CodeGen/AsmPrinter/AsmPrinter.cpp | 19 |
1 files changed, 4 insertions, 15 deletions
diff --git a/lib/CodeGen/AsmPrinter/AsmPrinter.cpp b/lib/CodeGen/AsmPrinter/AsmPrinter.cpp index f041f3be56..98f4b7d13c 100644 --- a/lib/CodeGen/AsmPrinter/AsmPrinter.cpp +++ b/lib/CodeGen/AsmPrinter/AsmPrinter.cpp @@ -451,10 +451,9 @@ const GlobalValue * AsmPrinter::findGlobalValue(const Constant *CV) { } /// EmitLLVMUsedList - For targets that define a TAI::UsedDirective, mark each -/// global in the specified llvm.used list as being used with this directive. -/// Internally linked data beginning with the PrivateGlobalPrefix or the -/// LessPrivateGlobalPrefix does not have the directive emitted (this -/// occurs in ObjC metadata). +/// global in the specified llvm.used list for which emitUsedDirectiveFor +/// is true, as being used with this directive. + void AsmPrinter::EmitLLVMUsedList(Constant *List) { const char *Directive = TAI->getUsedDirective(); @@ -464,17 +463,7 @@ void AsmPrinter::EmitLLVMUsedList(Constant *List) { for (unsigned i = 0, e = InitList->getNumOperands(); i != e; ++i) { const GlobalValue *GV = findGlobalValue(InitList->getOperand(i)); - if (GV) { - if (GV->hasInternalLinkage() && !isa<Function>(GV) && - ((strlen(TAI->getPrivateGlobalPrefix()) != 0 && - Mang->getValueName(GV) - .substr(0,strlen(TAI->getPrivateGlobalPrefix())) == - TAI->getPrivateGlobalPrefix()) || - (strlen(TAI->getLessPrivateGlobalPrefix()) != 0 && - Mang->getValueName(GV) - .substr(0,strlen(TAI->getLessPrivateGlobalPrefix())) == - TAI->getLessPrivateGlobalPrefix()))) - continue; + if (TAI->emitUsedDirectiveFor(GV, Mang)) { O << Directive; EmitConstantValueOnly(InitList->getOperand(i)); O << '\n'; |