From a3e2ea1c4a200338229464fe6f34337e36cb3fbe Mon Sep 17 00:00:00 2001 From: Zachary Turner Date: Tue, 23 Oct 2018 17:22:02 +0000 Subject: [PATCH] Change two methods from const char* to StringRef [NFC]. llvm-svn: 345055 --- lldb/include/lldb/Symbol/ClangASTContext.h | 4 +- .../SymbolFile/DWARF/DWARFASTParserClang.cpp | 2 +- .../SymbolFile/NativePDB/UdtRecordCompleter.cpp | 6 +- lldb/source/Symbol/ClangASTContext.cpp | 77 ++++++++++++---------- 4 files changed, 48 insertions(+), 41 deletions(-) diff --git a/lldb/include/lldb/Symbol/ClangASTContext.h b/lldb/include/lldb/Symbol/ClangASTContext.h index 1e13ba9..d616a01 100644 --- a/lldb/include/lldb/Symbol/ClangASTContext.h +++ b/lldb/include/lldb/Symbol/ClangASTContext.h @@ -833,7 +833,7 @@ public: // Modifying RecordType //---------------------------------------------------------------------- static clang::FieldDecl *AddFieldToRecordType(const CompilerType &type, - const char *name, + llvm::StringRef name, const CompilerType &field_type, lldb::AccessType access, uint32_t bitfield_bit_size); @@ -843,7 +843,7 @@ public: static void SetIsPacked(const CompilerType &type); static clang::VarDecl *AddVariableToRecordType(const CompilerType &type, - const char *name, + llvm::StringRef name, const CompilerType &var_type, lldb::AccessType access); diff --git a/lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.cpp b/lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.cpp index 2955d38..30c0458 100644 --- a/lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.cpp +++ b/lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.cpp @@ -3029,7 +3029,7 @@ bool DWARFASTParserClang::ParseChildMembers( if (anon_field_info.IsValid()) { clang::FieldDecl *unnamed_bitfield_decl = ClangASTContext::AddFieldToRecordType( - class_clang_type, NULL, + class_clang_type, llvm::StringRef(), m_ast.GetBuiltinTypeForEncodingAndBitSize( eEncodingSint, word_width), accessibility, anon_field_info.bit_size); diff --git a/lldb/source/Plugins/SymbolFile/NativePDB/UdtRecordCompleter.cpp b/lldb/source/Plugins/SymbolFile/NativePDB/UdtRecordCompleter.cpp index 905a3f0..2539f0c 100644 --- a/lldb/source/Plugins/SymbolFile/NativePDB/UdtRecordCompleter.cpp +++ b/lldb/source/Plugins/SymbolFile/NativePDB/UdtRecordCompleter.cpp @@ -108,8 +108,7 @@ Error UdtRecordCompleter::visitKnownMember( lldb::AccessType access = TranslateMemberAccess(static_data_member.getAccess()); ClangASTContext::AddVariableToRecordType( - m_derived_ct, static_data_member.Name.str().c_str(), complete_member_type, - access); + m_derived_ct, static_data_member.Name, complete_member_type, access); // FIXME: Add a PdbSymUid namespace for field list members and update // the m_uid_to_decl map with this decl. @@ -130,8 +129,7 @@ Error UdtRecordCompleter::visitKnownMember(CVMemberRecord &cvr, lldb::AccessType access = TranslateMemberAccess(data_member.getAccess()); clang::FieldDecl *decl = ClangASTContext::AddFieldToRecordType( - m_derived_ct, data_member.Name.str().c_str(), complete_member_type, - access, 0); + m_derived_ct, data_member.Name, complete_member_type, access, 0); // FIXME: Add a PdbSymUid namespace for field list members and update // the m_uid_to_decl map with this decl. diff --git a/lldb/source/Symbol/ClangASTContext.cpp b/lldb/source/Symbol/ClangASTContext.cpp index fe47f29..39ffc4c 100644 --- a/lldb/source/Symbol/ClangASTContext.cpp +++ b/lldb/source/Symbol/ClangASTContext.cpp @@ -7778,7 +7778,7 @@ ClangASTContext::GetAsObjCInterfaceDecl(const CompilerType &type) { } clang::FieldDecl *ClangASTContext::AddFieldToRecordType( - const CompilerType &type, const char *name, + const CompilerType &type, llvm::StringRef name, const CompilerType &field_clang_type, AccessType access, uint32_t bitfield_bit_size) { if (!type.IsValid() || !field_clang_type.IsValid()) @@ -7788,6 +7788,9 @@ clang::FieldDecl *ClangASTContext::AddFieldToRecordType( if (!ast) return nullptr; clang::ASTContext *clang_ast = ast->getASTContext(); + clang::IdentifierInfo *ident = nullptr; + if (!name.empty()) + ident = &clang_ast->Idents.get(name); clang::FieldDecl *field = nullptr; @@ -7805,14 +7808,14 @@ clang::FieldDecl *ClangASTContext::AddFieldToRecordType( field = clang::FieldDecl::Create( *clang_ast, record_decl, clang::SourceLocation(), clang::SourceLocation(), - name ? &clang_ast->Idents.get(name) : nullptr, // Identifier - ClangUtil::GetQualType(field_clang_type), // Field type - nullptr, // TInfo * - bit_width, // BitWidth - false, // Mutable - clang::ICIS_NoInit); // HasInit - - if (!name) { + ident, // Identifier + ClangUtil::GetQualType(field_clang_type), // Field type + nullptr, // TInfo * + bit_width, // BitWidth + false, // Mutable + clang::ICIS_NoInit); // HasInit + + if (name.empty()) { // Determine whether this field corresponds to an anonymous struct or // union. if (const clang::TagType *TagT = @@ -7848,9 +7851,9 @@ clang::FieldDecl *ClangASTContext::AddFieldToRecordType( field = clang::ObjCIvarDecl::Create( *clang_ast, class_interface_decl, clang::SourceLocation(), clang::SourceLocation(), - name ? &clang_ast->Idents.get(name) : nullptr, // Identifier - ClangUtil::GetQualType(field_clang_type), // Field type - nullptr, // TypeSourceInfo * + ident, // Identifier + ClangUtil::GetQualType(field_clang_type), // Field type + nullptr, // TypeSourceInfo * ConvertAccessTypeToObjCIvarAccessControl(access), bit_width, is_synthesized); @@ -7989,38 +7992,44 @@ void ClangASTContext::SetIsPacked(const CompilerType &type) { } clang::VarDecl *ClangASTContext::AddVariableToRecordType( - const CompilerType &type, const char *name, const CompilerType &var_type, - AccessType access) { - clang::VarDecl *var_decl = nullptr; - + const CompilerType &type, llvm::StringRef name, + const CompilerType &var_type, AccessType access) { if (!type.IsValid() || !var_type.IsValid()) return nullptr; + ClangASTContext *ast = llvm::dyn_cast(type.GetTypeSystem()); if (!ast) return nullptr; clang::RecordDecl *record_decl = ast->GetAsRecordDecl(type); - if (record_decl) { - var_decl = clang::VarDecl::Create( - *ast->getASTContext(), // ASTContext & - record_decl, // DeclContext * - clang::SourceLocation(), // clang::SourceLocation StartLoc - clang::SourceLocation(), // clang::SourceLocation IdLoc - name ? &ast->getASTContext()->Idents.get(name) - : nullptr, // clang::IdentifierInfo * - ClangUtil::GetQualType(var_type), // Variable clang::QualType - nullptr, // TypeSourceInfo * - clang::SC_Static); // StorageClass - if (var_decl) { - var_decl->setAccess( - ClangASTContext::ConvertAccessTypeToAccessSpecifier(access)); - record_decl->addDecl(var_decl); + if (!record_decl) + return nullptr; + + clang::VarDecl *var_decl = nullptr; + clang::IdentifierInfo *ident = nullptr; + if (!name.empty()) + ident = &ast->getASTContext()->Idents.get(name); + + var_decl = clang::VarDecl::Create( + *ast->getASTContext(), // ASTContext & + record_decl, // DeclContext * + clang::SourceLocation(), // clang::SourceLocation StartLoc + clang::SourceLocation(), // clang::SourceLocation IdLoc + ident, // clang::IdentifierInfo * + ClangUtil::GetQualType(var_type), // Variable clang::QualType + nullptr, // TypeSourceInfo * + clang::SC_Static); // StorageClass + if (!var_decl) + return nullptr; + + var_decl->setAccess( + ClangASTContext::ConvertAccessTypeToAccessSpecifier(access)); + record_decl->addDecl(var_decl); #ifdef LLDB_CONFIGURATION_DEBUG - VerifyDecl(var_decl); + VerifyDecl(var_decl); #endif - } - } + return var_decl; } -- 2.7.4