Author: Raphael Isemann Date: 2020-01-07T10:50:59+01:00 New Revision: d364815351a887cbcd4579bc41995f8b2eb185ff
URL: https://github.com/llvm/llvm-project/commit/d364815351a887cbcd4579bc41995f8b2eb185ff DIFF: https://github.com/llvm/llvm-project/commit/d364815351a887cbcd4579bc41995f8b2eb185ff.diff LOG: [lldb][NFC] Take a llvm::Triple in ClangASTContext constructor This constructor is supposed to take a string representing an llvm::Triple. We might as well take a llvm::Triple here which saves us all the string conversions in the call sites and we make this more type safe. Added: Modified: lldb/include/lldb/Host/HostInfoBase.h lldb/include/lldb/Symbol/ClangASTContext.h lldb/source/Host/common/HostInfoBase.cpp lldb/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCDeclVendor.cpp lldb/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCTypeEncodingParser.cpp lldb/source/Symbol/ClangASTContext.cpp lldb/unittests/Symbol/TestClangASTContext.cpp Removed: ################################################################################ diff --git a/lldb/include/lldb/Host/HostInfoBase.h b/lldb/include/lldb/Host/HostInfoBase.h index 5f0a4ab01f69..c59050cb34e9 100644 --- a/lldb/include/lldb/Host/HostInfoBase.h +++ b/lldb/include/lldb/Host/HostInfoBase.h @@ -33,11 +33,11 @@ class HostInfoBase { static void Initialize(); static void Terminate(); - /// Gets the host target triple as a const string. + /// Gets the host target triple. /// /// \return - /// A const string object containing the host target triple. - static llvm::StringRef GetTargetTriple(); + /// The host target triple. + static llvm::Triple GetTargetTriple(); enum ArchitectureKind { eArchKindDefault, // The overall default architecture that applications will diff --git a/lldb/include/lldb/Symbol/ClangASTContext.h b/lldb/include/lldb/Symbol/ClangASTContext.h index 53ecd1bb78fc..9e8d301fd3f7 100644 --- a/lldb/include/lldb/Symbol/ClangASTContext.h +++ b/lldb/include/lldb/Symbol/ClangASTContext.h @@ -56,7 +56,7 @@ class ClangASTContext : public TypeSystem { static bool classof(const TypeSystem *ts) { return ts->isA(&ID); } // Constructors and Destructors - explicit ClangASTContext(llvm::StringRef triple = ""); + explicit ClangASTContext(llvm::Triple triple = llvm::Triple()); explicit ClangASTContext(ArchSpec arch); /// Constructs a ClangASTContext that uses an existing ASTContext internally. diff --git a/lldb/source/Host/common/HostInfoBase.cpp b/lldb/source/Host/common/HostInfoBase.cpp index 0b24188d339a..8f263e90d90f 100644 --- a/lldb/source/Host/common/HostInfoBase.cpp +++ b/lldb/source/Host/common/HostInfoBase.cpp @@ -48,7 +48,7 @@ struct HostInfoBaseFields { } llvm::once_flag m_host_triple_once; - std::string m_host_triple; + llvm::Triple m_host_triple; llvm::once_flag m_host_arch_once; ArchSpec m_host_arch_32; @@ -82,10 +82,10 @@ void HostInfoBase::Terminate() { g_fields = nullptr; } -llvm::StringRef HostInfoBase::GetTargetTriple() { +llvm::Triple HostInfoBase::GetTargetTriple() { llvm::call_once(g_fields->m_host_triple_once, []() { g_fields->m_host_triple = - HostInfo::GetArchitecture().GetTriple().getTriple(); + HostInfo::GetArchitecture().GetTriple(); }); return g_fields->m_host_triple; } diff --git a/lldb/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCDeclVendor.cpp b/lldb/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCDeclVendor.cpp index 29930c303b07..73843063606c 100644 --- a/lldb/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCDeclVendor.cpp +++ b/lldb/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCDeclVendor.cpp @@ -146,9 +146,7 @@ AppleObjCDeclVendor::AppleObjCDeclVendor(ObjCLanguageRuntime &runtime) m_ast_ctx(runtime.GetProcess() ->GetTarget() .GetArchitecture() - .GetTriple() - .getTriple() - .c_str()), + .GetTriple()), m_type_realizer_sp(m_runtime.GetEncodingToType()) { m_external_source = new AppleObjCExternalASTSource(*this); llvm::IntrusiveRefCntPtr<clang::ExternalASTSource> external_source_owning_ptr( diff --git a/lldb/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCTypeEncodingParser.cpp b/lldb/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCTypeEncodingParser.cpp index d92f782c72e9..66f04bef6cbd 100644 --- a/lldb/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCTypeEncodingParser.cpp +++ b/lldb/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCTypeEncodingParser.cpp @@ -26,9 +26,7 @@ AppleObjCTypeEncodingParser::AppleObjCTypeEncodingParser( m_scratch_ast_ctx_up.reset(new ClangASTContext(runtime.GetProcess() ->GetTarget() .GetArchitecture() - .GetTriple() - .str() - .c_str())); + .GetTriple())); } std::string AppleObjCTypeEncodingParser::ReadStructName(StringLexer &type) { diff --git a/lldb/source/Symbol/ClangASTContext.cpp b/lldb/source/Symbol/ClangASTContext.cpp index 99299c3c6c42..314aaa83d4e6 100644 --- a/lldb/source/Symbol/ClangASTContext.cpp +++ b/lldb/source/Symbol/ClangASTContext.cpp @@ -499,9 +499,9 @@ static void ParseLangArgs(LangOptions &Opts, InputKind IK, const char *triple) { Opts.NoInlineDefine = !Opt; } -ClangASTContext::ClangASTContext(llvm::StringRef target_triple) { - if (!target_triple.empty()) - SetTargetTriple(target_triple); +ClangASTContext::ClangASTContext(llvm::Triple target_triple) { + if (!target_triple.str().empty()) + SetTargetTriple(target_triple.str()); // The caller didn't pass an ASTContext so create a new one for this // ClangASTContext. CreateASTContext(); diff --git a/lldb/unittests/Symbol/TestClangASTContext.cpp b/lldb/unittests/Symbol/TestClangASTContext.cpp index cea3a2912e30..547ca312283f 100644 --- a/lldb/unittests/Symbol/TestClangASTContext.cpp +++ b/lldb/unittests/Symbol/TestClangASTContext.cpp @@ -26,8 +26,7 @@ class TestClangASTContext : public testing::Test { SubsystemRAII<FileSystem, HostInfo> subsystems; void SetUp() override { - std::string triple = HostInfo::GetTargetTriple(); - m_ast.reset(new ClangASTContext(triple.c_str())); + m_ast.reset(new ClangASTContext(HostInfo::GetTargetTriple())); } void TearDown() override { m_ast.reset(); } _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits