Remove shouldEmitUsedDirectiveFor.
authorRafael Espindola <rafael.espindola@gmail.com>
Thu, 6 Mar 2014 22:47:08 +0000 (22:47 +0000)
committerRafael Espindola <rafael.espindola@gmail.com>
Thu, 6 Mar 2014 22:47:08 +0000 (22:47 +0000)
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

include/llvm/CodeGen/TargetLoweringObjectFileImpl.h
include/llvm/Target/TargetLoweringObjectFile.h
lib/CodeGen/AsmPrinter/AsmPrinter.cpp
lib/CodeGen/TargetLoweringObjectFileImpl.cpp
test/CodeGen/X86/darwin-no-dead-strip.ll

index fd4fa46f09d5c83553fb556d72bc9fcd2426ae4d..16fed32aa18c6a074e1270a787d60940e781dfa9 100644 (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,
index 2d9e8d3a2df8802eead5858db0753ff120d5ef59..cdb7ea6ca1be76a85e3ba78727cfe89f0a1d8894 100644 (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;
index 40d6bde3722499c9486e46248009835645488e4d..cf5b944ee7dbcf08bb003862759b5f46454d5e29 100644 (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);
   }
 }
index a4eb0ca7ffcf636a708324aca374083ace44d02d..0473729de04430c8108b7cc465b55b55899eb85a 100644 (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,
index edbd8aaa06727f99ef58c3f030f57a615bab85d3..35196aa5f8dce967987ab9bfed509315bc4efb4a 100644 (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" ]