Remove shouldEmitUsedDirectiveFor.

Clang now uses llvm.compiler.used for these cases.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@203174 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Rafael Espindola 2014-03-06 22:47:08 +00:00
parent e7147c1b57
commit b52d0c0d74
5 changed files with 6 additions and 34 deletions

View File

@ -102,12 +102,6 @@ public:
const MCSection *getSectionForConstant(SectionKind Kind) const override;
/// This hook allows targets to selectively decide not to emit the
/// UsedDirective for some symbols in llvm.used.
/// FIXME: REMOVE this (rdar://7071300)
bool shouldEmitUsedDirectiveFor(const GlobalValue *GV, Mangler &Mang,
TargetMachine &TM) const override;
/// The mach-o version of this method defaults to returning a stub reference.
const MCExpr *
getTTypeGlobalReference(const GlobalValue *GV, unsigned Encoding,

View File

@ -68,14 +68,6 @@ public:
ArrayRef<Module::ModuleFlagEntry> Flags,
Mangler &Mang, const TargetMachine &TM) const {}
/// This hook allows targets to selectively decide not to emit the
/// UsedDirective for some symbols in llvm.used.
/// FIXME: REMOVE this (rdar://7071300)
virtual bool shouldEmitUsedDirectiveFor(const GlobalValue *GV, Mangler &Mang,
TargetMachine &TM) const {
return GV != 0;
}
/// Given a constant with the SectionKind, return a section that it should be
/// placed in.
virtual const MCSection *getSectionForConstant(SectionKind Kind) const;

View File

@ -1453,7 +1453,7 @@ void AsmPrinter::EmitLLVMUsedList(const ConstantArray *InitList) {
for (unsigned i = 0, e = InitList->getNumOperands(); i != e; ++i) {
const GlobalValue *GV =
dyn_cast<GlobalValue>(InitList->getOperand(i)->stripPointerCasts());
if (GV && getObjFileLowering().shouldEmitUsedDirectiveFor(GV, *Mang, TM))
if (GV)
OutStreamer.EmitSymbolAttribute(getSymbol(GV), MCSA_NoDeadStrip);
}
}

View File

@ -641,24 +641,6 @@ TargetLoweringObjectFileMachO::getSectionForConstant(SectionKind Kind) const {
return ReadOnlySection; // .const
}
/// This hook allows targets to selectively decide not to emit the UsedDirective
/// for some symbols in llvm.used.
// FIXME: REMOVE this (rdar://7071300)
bool TargetLoweringObjectFileMachO::shouldEmitUsedDirectiveFor(
const GlobalValue *GV, Mangler &Mang, TargetMachine &TM) const {
// Check whether the mangled name has the "Private" or "LinkerPrivate" prefix.
if (GV->hasLocalLinkage() && !isa<Function>(GV)) {
// FIXME: ObjC metadata is currently emitted as internal symbols that have
// \1L and \0l prefixes on them. Fix them to be Private/LinkerPrivate and
// this horrible hack can go away.
MCSymbol *Sym = TM.getSymbol(GV, Mang);
if (Sym->getName()[0] == 'L' || Sym->getName()[0] == 'l')
return false;
}
return true;
}
const MCExpr *TargetLoweringObjectFileMachO::getTTypeGlobalReference(
const GlobalValue *GV, unsigned Encoding, Mangler &Mang,
const TargetMachine &TM, MachineModuleInfo *MMI,

View File

@ -6,4 +6,8 @@ target triple = "i686-apple-darwin8.7.2"
@x = weak global i32 0
; CHECK: .no_dead_strip _x
@llvm.used = appending global [1 x i8*] [ i8* bitcast (i32* @x to i8*) ]
@"\01Ly" = private global i8 0
; CHECK: no_dead_strip Ly
@llvm.used = appending global [2 x i8*] [ i8* bitcast (i32* @x to i8*),
i8* @"\01Ly" ]