Remove last Host usage from ArchSpec
Summary: In D39387, I was quick to jump to conclusion that ArchSpec has no external dependencies. It turns there still was one call to HostInfo::GetArchitecture left -- for implementing the "systemArch32" architecture and friends. Since GetAugmentedArchSpec is the place we handle these "incomplete" triples that don't specify os or vendor and "systemArch" looks very much like an incomplete triple, I move its handling there. After this ArchSpec *really* does not have external dependencies, and I'll move it to the Utility module as a follow-up. Reviewers: zturner, clayborg, jingham Subscribers: lldb-commits Differential Revision: https://reviews.llvm.org/D39896 llvm-svn: 318046
This commit is contained in:
parent
44156a0efb
commit
4ebb64b95f
@ -61,6 +61,8 @@ public:
|
||||
static const ArchSpec &
|
||||
GetArchitecture(ArchitectureKind arch_kind = eArchKindDefault);
|
||||
|
||||
static llvm::Optional<ArchitectureKind> ParseArchitectureKind(llvm::StringRef kind);
|
||||
|
||||
//------------------------------------------------------------------
|
||||
/// Find a resource files that are related to LLDB.
|
||||
///
|
||||
|
||||
@ -9,7 +9,6 @@
|
||||
|
||||
#include "lldb/Core/ArchSpec.h"
|
||||
|
||||
#include "lldb/Host/HostInfo.h"
|
||||
#include "lldb/Utility/NameMatches.h"
|
||||
#include "lldb/Utility/Stream.h" // for Stream
|
||||
#include "lldb/Utility/StringList.h"
|
||||
@ -874,17 +873,7 @@ bool ArchSpec::SetTriple(llvm::StringRef triple) {
|
||||
if (ParseMachCPUDashSubtypeTriple(triple, *this))
|
||||
return true;
|
||||
|
||||
if (triple.startswith(LLDB_ARCH_DEFAULT)) {
|
||||
// Special case for the current host default architectures...
|
||||
if (triple.equals(LLDB_ARCH_DEFAULT_32BIT))
|
||||
*this = HostInfo::GetArchitecture(HostInfo::eArchKind32);
|
||||
else if (triple.equals(LLDB_ARCH_DEFAULT_64BIT))
|
||||
*this = HostInfo::GetArchitecture(HostInfo::eArchKind64);
|
||||
else if (triple.equals(LLDB_ARCH_DEFAULT))
|
||||
*this = HostInfo::GetArchitecture(HostInfo::eArchKindDefault);
|
||||
} else {
|
||||
SetTriple(llvm::Triple(llvm::Triple::normalize(triple)));
|
||||
}
|
||||
SetTriple(llvm::Triple(llvm::Triple::normalize(triple)));
|
||||
return IsValid();
|
||||
}
|
||||
|
||||
|
||||
@ -103,6 +103,14 @@ const ArchSpec &HostInfoBase::GetArchitecture(ArchitectureKind arch_kind) {
|
||||
: g_fields->m_host_arch_32;
|
||||
}
|
||||
|
||||
llvm::Optional<HostInfoBase::ArchitectureKind> HostInfoBase::ParseArchitectureKind(llvm::StringRef kind) {
|
||||
return llvm::StringSwitch<llvm::Optional<ArchitectureKind>>(kind)
|
||||
.Case(LLDB_ARCH_DEFAULT, eArchKindDefault)
|
||||
.Case(LLDB_ARCH_DEFAULT_32BIT, eArchKind32)
|
||||
.Case(LLDB_ARCH_DEFAULT_64BIT, eArchKind64)
|
||||
.Default(llvm::None);
|
||||
}
|
||||
|
||||
bool HostInfoBase::GetLLDBPath(lldb::PathType type, FileSpec &file_spec) {
|
||||
file_spec.Clear();
|
||||
|
||||
@ -258,6 +266,9 @@ ArchSpec HostInfoBase::GetAugmentedArchSpec(llvm::StringRef triple) {
|
||||
if (!ArchSpec::ContainsOnlyArch(normalized_triple))
|
||||
return ArchSpec(triple);
|
||||
|
||||
if (auto kind = HostInfo::ParseArchitectureKind(triple))
|
||||
return HostInfo::GetArchitecture(*kind);
|
||||
|
||||
llvm::Triple host_triple(llvm::sys::getDefaultTargetTriple());
|
||||
|
||||
if (normalized_triple.getVendorName().empty())
|
||||
|
||||
@ -976,6 +976,9 @@ ArchSpec Platform::GetAugmentedArchSpec(llvm::StringRef triple) {
|
||||
if (!ArchSpec::ContainsOnlyArch(normalized_triple))
|
||||
return ArchSpec(triple);
|
||||
|
||||
if (auto kind = HostInfo::ParseArchitectureKind(triple))
|
||||
return HostInfo::GetArchitecture(*kind);
|
||||
|
||||
ArchSpec compatible_arch;
|
||||
ArchSpec raw_arch(triple);
|
||||
if (!IsCompatibleArchitecture(raw_arch, false, &compatible_arch))
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
//===-- HostTest.cpp --------------------------------------------*- C++ -*-===//
|
||||
//===-- HostInfoTest.cpp ----------------------------------------*- C++ -*-===//
|
||||
//
|
||||
// The LLVM Compiler Infrastructure
|
||||
//
|
||||
@ -8,6 +8,7 @@
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#include "lldb/Host/HostInfo.h"
|
||||
#include "lldb/lldb-defines.h"
|
||||
#include "gtest/gtest.h"
|
||||
|
||||
using namespace lldb_private;
|
||||
@ -37,4 +38,8 @@ TEST_F(HostInfoTest, GetAugmentedArchSpec) {
|
||||
EXPECT_EQ(spec.GetTriple().getOS(), triple.getOS());
|
||||
EXPECT_EQ(spec.GetTriple().getVendor(), triple.getVendor());
|
||||
EXPECT_EQ(spec.GetTriple().getEnvironment(), triple.getEnvironment());
|
||||
|
||||
// Test LLDB_ARCH_DEFAULT
|
||||
EXPECT_EQ(HostInfo::GetAugmentedArchSpec(LLDB_ARCH_DEFAULT).GetTriple(),
|
||||
HostInfo::GetArchitecture(HostInfo::eArchKindDefault).GetTriple());
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user