[llvm-commits] [llvm] r107886 - in /llvm/trunk: include/llvm/MC/MCAsmInfo.h include/llvm/MC/MCDirectives.h lib/MC/MCAsmInfo.cpp lib/MC/MCAsmInfoDarwin.cpp lib/MC/MCAsmStreamer.cpp lib/MC/MCMachOStreamer.cpp lib/MC/MCParser/AsmParser.cpp

Chris Lattner clattner at apple.com
Thu Jul 8 13:04:44 PDT 2010


On Jul 8, 2010, at 10:22 AM, Kevin Enderby wrote:

> Author: enderby
> Date: Thu Jul  8 12:22:42 2010
> New Revision: 107886
> 
> URL: http://llvm.org/viewvc/llvm-project?rev=107886&view=rev
> Log:
> Added the darwin .weak_def_can_be_hidden directive.

Thanks Kevin,

I think that the MCAsmInfo.h/.cpp chunks aren't needed for this until the compiler starts generating these.  When that happens it will be more convenient for it to be a bool than a const char*.  For now it's probably best to revert those two hunks.  Thanks!

-Chris

> 
> Modified:
>    llvm/trunk/include/llvm/MC/MCAsmInfo.h
>    llvm/trunk/include/llvm/MC/MCDirectives.h
>    llvm/trunk/lib/MC/MCAsmInfo.cpp
>    llvm/trunk/lib/MC/MCAsmInfoDarwin.cpp
>    llvm/trunk/lib/MC/MCAsmStreamer.cpp
>    llvm/trunk/lib/MC/MCMachOStreamer.cpp
>    llvm/trunk/lib/MC/MCParser/AsmParser.cpp
> 
> Modified: llvm/trunk/include/llvm/MC/MCAsmInfo.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/MC/MCAsmInfo.h?rev=107886&r1=107885&r2=107886&view=diff
> ==============================================================================
> --- llvm/trunk/include/llvm/MC/MCAsmInfo.h (original)
> +++ llvm/trunk/include/llvm/MC/MCAsmInfo.h Thu Jul  8 12:22:42 2010
> @@ -217,6 +217,11 @@
>     /// global as being a weak defined symbol.
>     const char *WeakDefDirective;            // Defaults to NULL.
> 
> +    /// WeakDefAutoPrivateDirective - This directive, if non-null, is used to
> +    /// declare a global as being a weak defined symbol that is automatically
> +    /// made private by the static linker.
> +    const char *WeakDefAutoPrivateDirective; // Defaults to NULL.
> +
>     /// LinkOnceDirective - This directive, if non-null is used to declare a
>     /// global as being a weak defined symbol.  This is used on cygwin/mingw.
>     const char *LinkOnceDirective;           // Defaults to NULL.
> @@ -387,6 +392,9 @@
>     bool hasNoDeadStrip() const { return HasNoDeadStrip; }
>     const char *getWeakRefDirective() const { return WeakRefDirective; }
>     const char *getWeakDefDirective() const { return WeakDefDirective; }
> +    const char *getWeakDefAutoPrivateDirective() const {
> +      return WeakDefAutoPrivateDirective;
> +    }
>     const char *getLinkOnceDirective() const { return LinkOnceDirective; }
> 
>     MCSymbolAttr getHiddenVisibilityAttr() const { return HiddenVisibilityAttr;}
> 
> Modified: llvm/trunk/include/llvm/MC/MCDirectives.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/MC/MCDirectives.h?rev=107886&r1=107885&r2=107886&view=diff
> ==============================================================================
> --- llvm/trunk/include/llvm/MC/MCDirectives.h (original)
> +++ llvm/trunk/include/llvm/MC/MCDirectives.h Thu Jul  8 12:22:42 2010
> @@ -38,7 +38,8 @@
>   MCSA_Reference,           ///< .reference (MachO)
>   MCSA_Weak,                ///< .weak
>   MCSA_WeakDefinition,      ///< .weak_definition (MachO)
> -  MCSA_WeakReference        ///< .weak_reference (MachO)
> +  MCSA_WeakReference,       ///< .weak_reference (MachO)
> +  MCSA_WeakDefAutoPrivate   ///< .weak_def_can_be_hidden (MachO)
> };
> 
> enum MCAssemblerFlag {
> 
> Modified: llvm/trunk/lib/MC/MCAsmInfo.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/MC/MCAsmInfo.cpp?rev=107886&r1=107885&r2=107886&view=diff
> ==============================================================================
> --- llvm/trunk/lib/MC/MCAsmInfo.cpp (original)
> +++ llvm/trunk/lib/MC/MCAsmInfo.cpp Thu Jul  8 12:22:42 2010
> @@ -59,6 +59,7 @@
>   HasNoDeadStrip = false;
>   WeakRefDirective = 0;
>   WeakDefDirective = 0;
> +  WeakDefAutoPrivateDirective = 0;
>   LinkOnceDirective = 0;
>   HiddenVisibilityAttr = MCSA_Hidden;
>   ProtectedVisibilityAttr = MCSA_Protected;
> 
> Modified: llvm/trunk/lib/MC/MCAsmInfoDarwin.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/MC/MCAsmInfoDarwin.cpp?rev=107886&r1=107885&r2=107886&view=diff
> ==============================================================================
> --- llvm/trunk/lib/MC/MCAsmInfoDarwin.cpp (original)
> +++ llvm/trunk/lib/MC/MCAsmInfoDarwin.cpp Thu Jul  8 12:22:42 2010
> @@ -33,6 +33,7 @@
>   // Directives:
>   WeakDefDirective = "\t.weak_definition ";
>   WeakRefDirective = "\t.weak_reference ";
> +  WeakDefAutoPrivateDirective = "\t.weak_def_can_be_hidden ";
>   ZeroDirective = "\t.space\t";  // ".space N" emits N zeros.
>   HasMachoZeroFillDirective = true;  // Uses .zerofill
>   HasMachoTBSSDirective = true; // Uses .tbss
> 
> Modified: llvm/trunk/lib/MC/MCAsmStreamer.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/MC/MCAsmStreamer.cpp?rev=107886&r1=107885&r2=107886&view=diff
> ==============================================================================
> --- llvm/trunk/lib/MC/MCAsmStreamer.cpp (original)
> +++ llvm/trunk/lib/MC/MCAsmStreamer.cpp Thu Jul  8 12:22:42 2010
> @@ -288,6 +288,7 @@
>   case MCSA_WeakDefinition: OS << "\t.weak_definition\t"; break;
>       // .weak_reference
>   case MCSA_WeakReference:  OS << MAI.getWeakRefDirective(); break;
> +  case MCSA_WeakDefAutoPrivate: OS << "\t.weak_def_can_be_hidden\t"; break;
>   }
> 
>   OS << *Symbol;
> 
> Modified: llvm/trunk/lib/MC/MCMachOStreamer.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/MC/MCMachOStreamer.cpp?rev=107886&r1=107885&r2=107886&view=diff
> ==============================================================================
> --- llvm/trunk/lib/MC/MCMachOStreamer.cpp (original)
> +++ llvm/trunk/lib/MC/MCMachOStreamer.cpp Thu Jul  8 12:22:42 2010
> @@ -273,6 +273,10 @@
>     // it has to be in a coalesced section, but this isn't enforced.
>     SD.setFlags(SD.getFlags() | SF_WeakDefinition);
>     break;
> +
> +  case MCSA_WeakDefAutoPrivate:
> +    SD.setFlags(SD.getFlags() | SF_WeakDefinition | SF_WeakReference);
> +    break;
>   }
> }
> 
> 
> Modified: llvm/trunk/lib/MC/MCParser/AsmParser.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/MC/MCParser/AsmParser.cpp?rev=107886&r1=107885&r2=107886&view=diff
> ==============================================================================
> --- llvm/trunk/lib/MC/MCParser/AsmParser.cpp (original)
> +++ llvm/trunk/lib/MC/MCParser/AsmParser.cpp Thu Jul  8 12:22:42 2010
> @@ -755,6 +755,8 @@
>       return ParseDirectiveSymbolAttribute(MCSA_WeakDefinition);
>     if (IDVal == ".weak_reference")
>       return ParseDirectiveSymbolAttribute(MCSA_WeakReference);
> +    if (IDVal == ".weak_def_can_be_hidden")
> +      return ParseDirectiveSymbolAttribute(MCSA_WeakDefAutoPrivate);
> 
>     if (IDVal == ".comm")
>       return ParseDirectiveComm(/*IsLocal=*/false);
> 
> 
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits





More information about the llvm-commits mailing list