From d364815351a887cbcd4579bc41995f8b2eb185ff Mon Sep 17 00:00:00 2001 From: Raphael Isemann Date: Tue, 7 Jan 2020 10:37:57 +0100 Subject: [PATCH] [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. --- lldb/include/lldb/Host/HostInfoBase.h | 6 +++--- lldb/include/lldb/Symbol/ClangASTContext.h | 2 +- lldb/source/Host/common/HostInfoBase.cpp | 6 +++--- .../LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCDeclVendor.cpp | 4 +--- .../ObjC/AppleObjCRuntime/AppleObjCTypeEncodingParser.cpp | 4 +--- lldb/source/Symbol/ClangASTContext.cpp | 6 +++--- lldb/unittests/Symbol/TestClangASTContext.cpp | 3 +-- 7 files changed, 13 insertions(+), 18 deletions(-) diff --git a/lldb/include/lldb/Host/HostInfoBase.h b/lldb/include/lldb/Host/HostInfoBase.h index 5f0a4ab..c59050c 100644 --- a/lldb/include/lldb/Host/HostInfoBase.h +++ b/lldb/include/lldb/Host/HostInfoBase.h @@ -33,11 +33,11 @@ public: 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 53ecd1b..9e8d301 100644 --- a/lldb/include/lldb/Symbol/ClangASTContext.h +++ b/lldb/include/lldb/Symbol/ClangASTContext.h @@ -56,7 +56,7 @@ public: 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 0b24188..8f263e9 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 29930c30..7384306 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 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 d92f782..66f04be 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 99299c3..314aaa8 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 cea3a29..547ca31 100644 --- a/lldb/unittests/Symbol/TestClangASTContext.cpp +++ b/lldb/unittests/Symbol/TestClangASTContext.cpp @@ -26,8 +26,7 @@ public: SubsystemRAII 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(); } -- 2.7.4