Author: Raphael Isemann
Date: 2019-12-25T19:02:40+01:00
New Revision: caf460d979a2b1141797919de0da0bbf1b8eaa88

URL: 
https://github.com/llvm/llvm-project/commit/caf460d979a2b1141797919de0da0bbf1b8eaa88
DIFF: 
https://github.com/llvm/llvm-project/commit/caf460d979a2b1141797919de0da0bbf1b8eaa88.diff

LOG: [lldb][NFC] Use StringRef in 
ClangASTContext::GetBuiltinTypeForDWARFEncodingAndBitSize

Added: 
    

Modified: 
    lldb/include/lldb/Symbol/ClangASTContext.h
    lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.cpp
    lldb/source/Symbol/ClangASTContext.cpp

Removed: 
    


################################################################################
diff  --git a/lldb/include/lldb/Symbol/ClangASTContext.h 
b/lldb/include/lldb/Symbol/ClangASTContext.h
index c56a4975f53e..e25eae8180df 100644
--- a/lldb/include/lldb/Symbol/ClangASTContext.h
+++ b/lldb/include/lldb/Symbol/ClangASTContext.h
@@ -155,9 +155,9 @@ class ClangASTContext : public TypeSystem {
 
   static lldb::BasicType GetBasicTypeEnumeration(ConstString name);
 
-  CompilerType GetBuiltinTypeForDWARFEncodingAndBitSize(const char *type_name,
-                                                        uint32_t dw_ate,
-                                                        uint32_t bit_size);
+  CompilerType
+  GetBuiltinTypeForDWARFEncodingAndBitSize(llvm::StringRef type_name,
+                                           uint32_t dw_ate, uint32_t bit_size);
 
   CompilerType GetCStringType(bool is_const);
 

diff  --git a/lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.cpp 
b/lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.cpp
index d8c2e7d5409e..e5c37e771945 100644
--- a/lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.cpp
+++ b/lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.cpp
@@ -598,7 +598,7 @@ DWARFASTParserClang::ParseTypeModifier(const SymbolContext 
&sc,
   case DW_TAG_base_type:
     resolve_state = Type::ResolveState::Full;
     clang_type = m_ast.GetBuiltinTypeForDWARFEncodingAndBitSize(
-        attrs.name.GetCString(), attrs.encoding,
+        attrs.name.GetStringRef(), attrs.encoding,
         attrs.byte_size.getValueOr(0) * 8);
     break;
 
@@ -809,7 +809,7 @@ TypeSP DWARFASTParserClang::ParseEnum(const SymbolContext 
&sc,
     if (!enumerator_clang_type) {
       if (attrs.byte_size) {
         enumerator_clang_type = m_ast.GetBuiltinTypeForDWARFEncodingAndBitSize(
-            NULL, DW_ATE_signed, *attrs.byte_size * 8);
+            "", DW_ATE_signed, *attrs.byte_size * 8);
       } else {
         enumerator_clang_type = m_ast.GetBasicType(eBasicTypeInt);
       }

diff  --git a/lldb/source/Symbol/ClangASTContext.cpp 
b/lldb/source/Symbol/ClangASTContext.cpp
index 937951c0608d..dab210c15f4e 100644
--- a/lldb/source/Symbol/ClangASTContext.cpp
+++ b/lldb/source/Symbol/ClangASTContext.cpp
@@ -907,11 +907,9 @@ CompilerType ClangASTContext::GetBasicType(lldb::BasicType 
basic_type) {
 }
 
 CompilerType ClangASTContext::GetBuiltinTypeForDWARFEncodingAndBitSize(
-    const char *type_name, uint32_t dw_ate, uint32_t bit_size) {
+    llvm::StringRef type_name, uint32_t dw_ate, uint32_t bit_size) {
   ASTContext &ast = getASTContext();
 
-#define streq(a, b) strcmp(a, b) == 0
-
   switch (dw_ate) {
   default:
     break;
@@ -934,16 +932,13 @@ CompilerType 
ClangASTContext::GetBuiltinTypeForDWARFEncodingAndBitSize(
 
   case DW_ATE_lo_user:
     // This has been seen to mean DW_AT_complex_integer
-    if (type_name) {
-      if (::strstr(type_name, "complex")) {
-        CompilerType complex_int_clang_type =
-            GetBuiltinTypeForDWARFEncodingAndBitSize("int", DW_ATE_signed,
-                                                     bit_size / 2);
-        return CompilerType(
-            this,
-            ast.getComplexType(ClangUtil::GetQualType(complex_int_clang_type))
-                .getAsOpaquePtr());
-      }
+    if (type_name.contains("complex")) {
+      CompilerType complex_int_clang_type =
+          GetBuiltinTypeForDWARFEncodingAndBitSize("int", DW_ATE_signed,
+                                                   bit_size / 2);
+      return CompilerType(this, ast.getComplexType(ClangUtil::GetQualType(
+                                                       complex_int_clang_type))
+                                    .getAsOpaquePtr());
     }
     break;
 
@@ -966,13 +961,13 @@ CompilerType 
ClangASTContext::GetBuiltinTypeForDWARFEncodingAndBitSize(
     break;
 
   case DW_ATE_float:
-    if (streq(type_name, "float") &&
+    if (type_name == "float" &&
         QualTypeMatchesBitSize(bit_size, ast, ast.FloatTy))
       return CompilerType(this, ast.FloatTy.getAsOpaquePtr());
-    if (streq(type_name, "double") &&
+    if (type_name == "double" &&
         QualTypeMatchesBitSize(bit_size, ast, ast.DoubleTy))
       return CompilerType(this, ast.DoubleTy.getAsOpaquePtr());
-    if (streq(type_name, "long double") &&
+    if (type_name == "long double" &&
         QualTypeMatchesBitSize(bit_size, ast, ast.LongDoubleTy))
       return CompilerType(this, ast.LongDoubleTy.getAsOpaquePtr());
     // Fall back to not requiring a name match
@@ -987,31 +982,31 @@ CompilerType 
ClangASTContext::GetBuiltinTypeForDWARFEncodingAndBitSize(
     break;
 
   case DW_ATE_signed:
-    if (type_name) {
-      if (streq(type_name, "wchar_t") &&
+    if (!type_name.empty()) {
+      if (type_name == "wchar_t" &&
           QualTypeMatchesBitSize(bit_size, ast, ast.WCharTy) &&
           (getTargetInfo() &&
            TargetInfo::isTypeSigned(getTargetInfo()->getWCharType())))
         return CompilerType(this, ast.WCharTy.getAsOpaquePtr());
-      if (streq(type_name, "void") &&
+      if (type_name == "void" &&
           QualTypeMatchesBitSize(bit_size, ast, ast.VoidTy))
         return CompilerType(this, ast.VoidTy.getAsOpaquePtr());
-      if (strstr(type_name, "long long") &&
+      if (type_name.contains("long long") &&
           QualTypeMatchesBitSize(bit_size, ast, ast.LongLongTy))
         return CompilerType(this, ast.LongLongTy.getAsOpaquePtr());
-      if (strstr(type_name, "long") &&
+      if (type_name.contains("long") &&
           QualTypeMatchesBitSize(bit_size, ast, ast.LongTy))
         return CompilerType(this, ast.LongTy.getAsOpaquePtr());
-      if (strstr(type_name, "short") &&
+      if (type_name.contains("short") &&
           QualTypeMatchesBitSize(bit_size, ast, ast.ShortTy))
         return CompilerType(this, ast.ShortTy.getAsOpaquePtr());
-      if (strstr(type_name, "char")) {
+      if (type_name.contains("char")) {
         if (QualTypeMatchesBitSize(bit_size, ast, ast.CharTy))
           return CompilerType(this, ast.CharTy.getAsOpaquePtr());
         if (QualTypeMatchesBitSize(bit_size, ast, ast.SignedCharTy))
           return CompilerType(this, ast.SignedCharTy.getAsOpaquePtr());
       }
-      if (strstr(type_name, "int")) {
+      if (type_name.contains("int")) {
         if (QualTypeMatchesBitSize(bit_size, ast, ast.IntTy))
           return CompilerType(this, ast.IntTy.getAsOpaquePtr());
         if (QualTypeMatchesBitSize(bit_size, ast, ast.Int128Ty))
@@ -1034,8 +1029,7 @@ CompilerType 
ClangASTContext::GetBuiltinTypeForDWARFEncodingAndBitSize(
     break;
 
   case DW_ATE_signed_char:
-    if (ast.getLangOpts().CharIsSigned && type_name &&
-        streq(type_name, "char")) {
+    if (ast.getLangOpts().CharIsSigned && type_name == "char") {
       if (QualTypeMatchesBitSize(bit_size, ast, ast.CharTy))
         return CompilerType(this, ast.CharTy.getAsOpaquePtr());
     }
@@ -1044,27 +1038,27 @@ CompilerType 
ClangASTContext::GetBuiltinTypeForDWARFEncodingAndBitSize(
     break;
 
   case DW_ATE_unsigned:
-    if (type_name) {
-      if (streq(type_name, "wchar_t")) {
+    if (!type_name.empty()) {
+      if (type_name == "wchar_t") {
         if (QualTypeMatchesBitSize(bit_size, ast, ast.WCharTy)) {
           if (!(getTargetInfo() &&
                 TargetInfo::isTypeSigned(getTargetInfo()->getWCharType())))
             return CompilerType(this, ast.WCharTy.getAsOpaquePtr());
         }
       }
-      if (strstr(type_name, "long long")) {
+      if (type_name.contains("long long")) {
         if (QualTypeMatchesBitSize(bit_size, ast, ast.UnsignedLongLongTy))
           return CompilerType(this, ast.UnsignedLongLongTy.getAsOpaquePtr());
-      } else if (strstr(type_name, "long")) {
+      } else if (type_name.contains("long")) {
         if (QualTypeMatchesBitSize(bit_size, ast, ast.UnsignedLongTy))
           return CompilerType(this, ast.UnsignedLongTy.getAsOpaquePtr());
-      } else if (strstr(type_name, "short")) {
+      } else if (type_name.contains("short")) {
         if (QualTypeMatchesBitSize(bit_size, ast, ast.UnsignedShortTy))
           return CompilerType(this, ast.UnsignedShortTy.getAsOpaquePtr());
-      } else if (strstr(type_name, "char")) {
+      } else if (type_name.contains("char")) {
         if (QualTypeMatchesBitSize(bit_size, ast, ast.UnsignedCharTy))
           return CompilerType(this, ast.UnsignedCharTy.getAsOpaquePtr());
-      } else if (strstr(type_name, "int")) {
+      } else if (type_name.contains("int")) {
         if (QualTypeMatchesBitSize(bit_size, ast, ast.UnsignedIntTy))
           return CompilerType(this, ast.UnsignedIntTy.getAsOpaquePtr());
         if (QualTypeMatchesBitSize(bit_size, ast, ast.UnsignedInt128Ty))
@@ -1087,8 +1081,7 @@ CompilerType 
ClangASTContext::GetBuiltinTypeForDWARFEncodingAndBitSize(
     break;
 
   case DW_ATE_unsigned_char:
-    if (!ast.getLangOpts().CharIsSigned && type_name &&
-        streq(type_name, "char")) {
+    if (!ast.getLangOpts().CharIsSigned && type_name == "char") {
       if (QualTypeMatchesBitSize(bit_size, ast, ast.CharTy))
         return CompilerType(this, ast.CharTy.getAsOpaquePtr());
     }
@@ -1102,23 +1095,24 @@ CompilerType 
ClangASTContext::GetBuiltinTypeForDWARFEncodingAndBitSize(
     break;
 
   case DW_ATE_UTF:
-    if (type_name) {
-      if (streq(type_name, "char16_t"))
+    if (!type_name.empty()) {
+      if (type_name == "char16_t")
         return CompilerType(this, ast.Char16Ty.getAsOpaquePtr());
-      if (streq(type_name, "char32_t"))
+      if (type_name == "char32_t")
         return CompilerType(this, ast.Char32Ty.getAsOpaquePtr());
-      if (streq(type_name, "char8_t"))
+      if (type_name == "char8_t")
         return CompilerType(this, ast.Char8Ty.getAsOpaquePtr());
     }
     break;
   }
   // This assert should fire for anything that we don't catch above so we know
   // to fix any issues we run into.
-  if (type_name) {
-    Host::SystemLog(Host::eSystemLogError, "error: need to add support for "
-                                           "DW_TAG_base_type '%s' encoded with 
"
-                                           "DW_ATE = 0x%x, bit_size = %u\n",
-                    type_name, dw_ate, bit_size);
+  if (!type_name.empty()) {
+    std::string type_name_str = type_name.str();
+    Host::SystemLog(Host::eSystemLogError,
+                    "error: need to add support for DW_TAG_base_type '%s' "
+                    "encoded with DW_ATE = 0x%x, bit_size = %u\n",
+                    type_name_str.c_str(), dw_ate, bit_size);
   } else {
     Host::SystemLog(Host::eSystemLogError, "error: need to add support for "
                                            "DW_TAG_base_type encoded with "


        
_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to