[llvm-commits] [llvm] r86914 - in /llvm/trunk: include/llvm/Analysis/DebugInfo.h include/llvm/Metadata.h lib/Analysis/DebugInfo.cpp lib/VMCore/Metadata.cpp

Jeffrey Yasskin jyasskin at google.com
Fri Nov 20 08:32:52 PST 2009


Hi Devang. This is inconvenient when I want to pass a string in from a
std::string, PyString, or from Function::getName(). I don't think it's
worth it just to let users pass 0 instead of "".

On Wed, Nov 11, 2009 at 4:50 PM, Devang Patel <dpatel at apple.com> wrote:
> Author: dpatel
> Date: Wed Nov 11 18:50:58 2009
> New Revision: 86914
>
> URL: http://llvm.org/viewvc/llvm-project?rev=86914&view=rev
> Log:
> Do not use StringRef in DebugInfo interface.
> This allows StringRef to skip controversial if(str) check in constructor.
> Buildbots, wait for corresponding clang and llvm-gcc FE check-ins!
>
> Modified:
>    llvm/trunk/include/llvm/Analysis/DebugInfo.h
>    llvm/trunk/include/llvm/Metadata.h
>    llvm/trunk/lib/Analysis/DebugInfo.cpp
>    llvm/trunk/lib/VMCore/Metadata.cpp
>
> Modified: llvm/trunk/include/llvm/Analysis/DebugInfo.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Analysis/DebugInfo.h?rev=86914&r1=86913&r2=86914&view=diff
>
> ==============================================================================
> --- llvm/trunk/include/llvm/Analysis/DebugInfo.h (original)
> +++ llvm/trunk/include/llvm/Analysis/DebugInfo.h Wed Nov 11 18:50:58 2009
> @@ -496,26 +496,26 @@
>     /// CreateCompileUnit - Create a new descriptor for the specified compile
>     /// unit.
>     DICompileUnit CreateCompileUnit(unsigned LangID,
> -                                    StringRef Filenae,
> -                                    StringRef Directory,
> -                                    StringRef Producer,
> +                                    const char * Filename,
> +                                    const char * Directory,
> +                                    const char * Producer,
>                                     bool isMain = false,
>                                     bool isOptimized = false,
>                                     const char *Flags = "",
>                                     unsigned RunTimeVer = 0);
>
>     /// CreateEnumerator - Create a single enumerator value.
> -    DIEnumerator CreateEnumerator(StringRef Name, uint64_t Val);
> +    DIEnumerator CreateEnumerator(const char * Name, uint64_t Val);
>
>     /// CreateBasicType - Create a basic type like int, float, etc.
> -    DIBasicType CreateBasicType(DIDescriptor Context, StringRef Name,
> +    DIBasicType CreateBasicType(DIDescriptor Context, const char * Name,
>                                 DICompileUnit CompileUnit, unsigned LineNumber,
>                                 uint64_t SizeInBits, uint64_t AlignInBits,
>                                 uint64_t OffsetInBits, unsigned Flags,
>                                 unsigned Encoding);
>
>     /// CreateBasicType - Create a basic type like int, float, etc.
> -    DIBasicType CreateBasicTypeEx(DIDescriptor Context, StringRef Name,
> +    DIBasicType CreateBasicTypeEx(DIDescriptor Context, const char * Name,
>                                 DICompileUnit CompileUnit, unsigned LineNumber,
>                                 Constant *SizeInBits, Constant *AlignInBits,
>                                 Constant *OffsetInBits, unsigned Flags,
> @@ -524,7 +524,7 @@
>     /// CreateDerivedType - Create a derived type like const qualified type,
>     /// pointer, typedef, etc.
>     DIDerivedType CreateDerivedType(unsigned Tag, DIDescriptor Context,
> -                                    StringRef Name,
> +                                    const char * Name,
>                                     DICompileUnit CompileUnit,
>                                     unsigned LineNumber,
>                                     uint64_t SizeInBits, uint64_t AlignInBits,
> @@ -534,7 +534,7 @@
>     /// CreateDerivedType - Create a derived type like const qualified type,
>     /// pointer, typedef, etc.
>     DIDerivedType CreateDerivedTypeEx(unsigned Tag, DIDescriptor Context,
> -                                        StringRef Name,
> +                                        const char * Name,
>                                     DICompileUnit CompileUnit,
>                                     unsigned LineNumber,
>                                     Constant *SizeInBits, Constant *AlignInBits,
> @@ -543,7 +543,7 @@
>
>     /// CreateCompositeType - Create a composite type like array, struct, etc.
>     DICompositeType CreateCompositeType(unsigned Tag, DIDescriptor Context,
> -                                        StringRef Name,
> +                                        const char * Name,
>                                         DICompileUnit CompileUnit,
>                                         unsigned LineNumber,
>                                         uint64_t SizeInBits,
> @@ -555,7 +555,7 @@
>
>     /// CreateCompositeType - Create a composite type like array, struct, etc.
>     DICompositeType CreateCompositeTypeEx(unsigned Tag, DIDescriptor Context,
> -                                        StringRef Name,
> +                                        const char * Name,
>                                         DICompileUnit CompileUnit,
>                                         unsigned LineNumber,
>                                         Constant *SizeInBits,
> @@ -567,25 +567,25 @@
>
>     /// CreateSubprogram - Create a new descriptor for the specified subprogram.
>     /// See comments in DISubprogram for descriptions of these fields.
> -    DISubprogram CreateSubprogram(DIDescriptor Context, StringRef Name,
> -                                  StringRef DisplayName,
> -                                  StringRef LinkageName,
> +    DISubprogram CreateSubprogram(DIDescriptor Context, const char * Name,
> +                                  const char * DisplayName,
> +                                  const char * LinkageName,
>                                   DICompileUnit CompileUnit, unsigned LineNo,
>                                   DIType Type, bool isLocalToUnit,
>                                   bool isDefinition);
>
>     /// CreateGlobalVariable - Create a new descriptor for the specified global.
>     DIGlobalVariable
> -    CreateGlobalVariable(DIDescriptor Context, StringRef Name,
> -                         StringRef DisplayName,
> -                         StringRef LinkageName,
> +    CreateGlobalVariable(DIDescriptor Context, const char * Name,
> +                         const char * DisplayName,
> +                         const char * LinkageName,
>                          DICompileUnit CompileUnit,
>                          unsigned LineNo, DIType Type, bool isLocalToUnit,
>                          bool isDefinition, llvm::GlobalVariable *GV);
>
>     /// CreateVariable - Create a new descriptor for the specified variable.
>     DIVariable CreateVariable(unsigned Tag, DIDescriptor Context,
> -                              StringRef Name,
> +                              const char * Name,
>                               DICompileUnit CompileUnit, unsigned LineNo,
>                               DIType Type);
>
>
> Modified: llvm/trunk/include/llvm/Metadata.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Metadata.h?rev=86914&r1=86913&r2=86914&view=diff
>
> ==============================================================================
> --- llvm/trunk/include/llvm/Metadata.h (original)
> +++ llvm/trunk/include/llvm/Metadata.h Wed Nov 11 18:50:58 2009
> @@ -60,6 +60,7 @@
>
>  public:
>   static MDString *get(LLVMContext &Context, StringRef Str);
> +  static MDString *get(LLVMContext &Context, const char *Str);
>
>   StringRef getString() const { return Str; }
>
>
> Modified: llvm/trunk/lib/Analysis/DebugInfo.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Analysis/DebugInfo.cpp?rev=86914&r1=86913&r2=86914&view=diff
>
> ==============================================================================
> --- llvm/trunk/lib/Analysis/DebugInfo.cpp (original)
> +++ llvm/trunk/lib/Analysis/DebugInfo.cpp Wed Nov 11 18:50:58 2009
> @@ -653,9 +653,9 @@
>  /// CreateCompileUnit - Create a new descriptor for the specified compile
>  /// unit.  Note that this does not unique compile units within the module.
>  DICompileUnit DIFactory::CreateCompileUnit(unsigned LangID,
> -                                           StringRef Filename,
> -                                           StringRef Directory,
> -                                           StringRef Producer,
> +                                           const char * Filename,
> +                                           const char * Directory,
> +                                           const char * Producer,
>                                            bool isMain,
>                                            bool isOptimized,
>                                            const char *Flags,
> @@ -677,7 +677,7 @@
>  }
>
>  /// CreateEnumerator - Create a single enumerator value.
> -DIEnumerator DIFactory::CreateEnumerator(StringRef Name, uint64_t Val){
> +DIEnumerator DIFactory::CreateEnumerator(const char * Name, uint64_t Val){
>   Value *Elts[] = {
>     GetTagConstant(dwarf::DW_TAG_enumerator),
>     MDString::get(VMContext, Name),
> @@ -689,7 +689,7 @@
>
>  /// CreateBasicType - Create a basic type like int, float, etc.
>  DIBasicType DIFactory::CreateBasicType(DIDescriptor Context,
> -                                       StringRef Name,
> +                                       const char * Name,
>                                        DICompileUnit CompileUnit,
>                                        unsigned LineNumber,
>                                        uint64_t SizeInBits,
> @@ -714,7 +714,7 @@
>
>  /// CreateBasicType - Create a basic type like int, float, etc.
>  DIBasicType DIFactory::CreateBasicTypeEx(DIDescriptor Context,
> -                                         StringRef Name,
> +                                         const char * Name,
>                                          DICompileUnit CompileUnit,
>                                          unsigned LineNumber,
>                                          Constant *SizeInBits,
> @@ -741,7 +741,7 @@
>  /// pointer, typedef, etc.
>  DIDerivedType DIFactory::CreateDerivedType(unsigned Tag,
>                                            DIDescriptor Context,
> -                                           StringRef Name,
> +                                           const char * Name,
>                                            DICompileUnit CompileUnit,
>                                            unsigned LineNumber,
>                                            uint64_t SizeInBits,
> @@ -769,7 +769,7 @@
>  /// pointer, typedef, etc.
>  DIDerivedType DIFactory::CreateDerivedTypeEx(unsigned Tag,
>                                              DIDescriptor Context,
> -                                             StringRef Name,
> +                                             const char * Name,
>                                              DICompileUnit CompileUnit,
>                                              unsigned LineNumber,
>                                              Constant *SizeInBits,
> @@ -796,7 +796,7 @@
>  /// CreateCompositeType - Create a composite type like array, struct, etc.
>  DICompositeType DIFactory::CreateCompositeType(unsigned Tag,
>                                                DIDescriptor Context,
> -                                               StringRef Name,
> +                                               const char * Name,
>                                                DICompileUnit CompileUnit,
>                                                unsigned LineNumber,
>                                                uint64_t SizeInBits,
> @@ -828,7 +828,7 @@
>  /// CreateCompositeType - Create a composite type like array, struct, etc.
>  DICompositeType DIFactory::CreateCompositeTypeEx(unsigned Tag,
>                                                  DIDescriptor Context,
> -                                                 StringRef Name,
> +                                                 const char * Name,
>                                                  DICompileUnit CompileUnit,
>                                                  unsigned LineNumber,
>                                                  Constant *SizeInBits,
> @@ -861,9 +861,9 @@
>  /// See comments in DISubprogram for descriptions of these fields.  This
>  /// method does not unique the generated descriptors.
>  DISubprogram DIFactory::CreateSubprogram(DIDescriptor Context,
> -                                         StringRef Name,
> -                                         StringRef DisplayName,
> -                                         StringRef LinkageName,
> +                                         const char * Name,
> +                                         const char * DisplayName,
> +                                         const char * LinkageName,
>                                          DICompileUnit CompileUnit,
>                                          unsigned LineNo, DIType Type,
>                                          bool isLocalToUnit,
> @@ -887,9 +887,9 @@
>
>  /// CreateGlobalVariable - Create a new descriptor for the specified global.
>  DIGlobalVariable
> -DIFactory::CreateGlobalVariable(DIDescriptor Context, StringRef Name,
> -                                StringRef DisplayName,
> -                                StringRef LinkageName,
> +DIFactory::CreateGlobalVariable(DIDescriptor Context, const char * Name,
> +                                const char * DisplayName,
> +                                const char * LinkageName,
>                                 DICompileUnit CompileUnit,
>                                 unsigned LineNo, DIType Type,bool isLocalToUnit,
>                                 bool isDefinition, llvm::GlobalVariable *Val) {
> @@ -921,7 +921,7 @@
>
>  /// CreateVariable - Create a new descriptor for the specified variable.
>  DIVariable DIFactory::CreateVariable(unsigned Tag, DIDescriptor Context,
> -                                     StringRef Name,
> +                                     const char * Name,
>                                      DICompileUnit CompileUnit, unsigned LineNo,
>                                      DIType Type) {
>   Value *Elts[] = {
>
> Modified: llvm/trunk/lib/VMCore/Metadata.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/VMCore/Metadata.cpp?rev=86914&r1=86913&r2=86914&view=diff
>
> ==============================================================================
> --- llvm/trunk/lib/VMCore/Metadata.cpp (original)
> +++ llvm/trunk/lib/VMCore/Metadata.cpp Wed Nov 11 18:50:58 2009
> @@ -39,6 +39,17 @@
>     new MDString(Context, Entry.getKey());
>  }
>
> +MDString *MDString::get(LLVMContext &Context, const char *Str) {
> +  LLVMContextImpl *pImpl = Context.pImpl;
> +  StringMapEntry<MDString *> &Entry =
> +    pImpl->MDStringCache.GetOrCreateValue(Str ? StringRef(Str) : StringRef());
> +  MDString *&S = Entry.getValue();
> +  if (S) return S;
> +
> +  return S =
> +    new MDString(Context, Entry.getKey());
> +}
> +
>  //===----------------------------------------------------------------------===//
>  // MDNode implementation.
>  //
>
>
> _______________________________________________
> 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