diff options
| author | Anton Korobeynikov <asl@math.spbu.ru> | 2007-04-29 18:35:00 +0000 |
|---|---|---|
| committer | Anton Korobeynikov <asl@math.spbu.ru> | 2007-04-29 18:35:00 +0000 |
| commit | 39f3cffbe38701ca69890baf4fa22d8a7abf2da1 (patch) | |
| tree | c63895bd098915fb0b9574cfdeb2de8386fb902d /llvm/lib/Target/X86/X86ATTAsmPrinter.cpp | |
| parent | 546ea7ea88965166e6d756c2012ede522bf12682 (diff) | |
| download | bcm5719-llvm-39f3cffbe38701ca69890baf4fa22d8a7abf2da1.tar.gz bcm5719-llvm-39f3cffbe38701ca69890baf4fa22d8a7abf2da1.zip | |
Implement protected visibility. This partly implements PR1363. Linker
should be taught to deal with protected symbols.
llvm-svn: 36565
Diffstat (limited to 'llvm/lib/Target/X86/X86ATTAsmPrinter.cpp')
| -rwxr-xr-x | llvm/lib/Target/X86/X86ATTAsmPrinter.cpp | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/llvm/lib/Target/X86/X86ATTAsmPrinter.cpp b/llvm/lib/Target/X86/X86ATTAsmPrinter.cpp index 03a22865e2c..634f41b9200 100755 --- a/llvm/lib/Target/X86/X86ATTAsmPrinter.cpp +++ b/llvm/lib/Target/X86/X86ATTAsmPrinter.cpp @@ -125,9 +125,13 @@ bool X86ATTAsmPrinter::runOnMachineFunction(MachineFunction &MF) { } break; } - if (F->hasHiddenVisibility()) + if (F->hasHiddenVisibility()) { if (const char *Directive = TAI->getHiddenDirective()) O << Directive << CurrentFnName << "\n"; + } else if (F->hasProtectedVisibility()) { + if (const char *Directive = TAI->getProtectedDirective()) + O << Directive << CurrentFnName << "\n"; + } if (Subtarget->isTargetELF()) O << "\t.type " << CurrentFnName << ",@function\n"; @@ -322,7 +326,8 @@ void X86ATTAsmPrinter::printOperand(const MachineInstr *MI, unsigned OpNo, if (isCallOp && isa<Function>(GV)) { if (printGOT(TM, Subtarget)) { // Assemble call via PLT for non-local symbols - if (!GV->hasHiddenVisibility() || GV->isDeclaration()) + if (!(GV->hasHiddenVisibility() || GV->hasProtectedVisibility()) || + GV->isDeclaration()) O << "@PLT"; } if (Subtarget->isTargetCygMing() && GV->isDeclaration()) |

