[lldb][NFC] Take a llvm::Triple in ClangASTContext constructor
authorRaphael Isemann <teemperor@gmail.com>
Tue, 7 Jan 2020 09:37:57 +0000 (10:37 +0100)
committerRaphael Isemann <teemperor@gmail.com>
Tue, 7 Jan 2020 09:50:59 +0000 (10:50 +0100)
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
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

index 5f0a4ab..c59050c 100644 (file)
@@ -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
index 53ecd1b..9e8d301 100644 (file)
@@ -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.
index 0b24188..8f263e9 100644 (file)
@@ -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;
 }
index 29930c3..7384306 100644 (file)
@@ -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(
index d92f782..66f04be 100644 (file)
@@ -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) {
index 99299c3..314aaa8 100644 (file)
@@ -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();
index cea3a29..547ca31 100644 (file)
@@ -26,8 +26,7 @@ public:
   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(); }