From c4f2f9d660acff7fdd81d3e5790eb9cab45f25e2 Mon Sep 17 00:00:00 2001 From: Matt Arsenault Date: Wed, 15 May 2024 22:08:32 +0200 Subject: [PATCH] Triple: Add isMacOSVersionGE Triple utils The existing function is LT but most of the uses are better expressed as GE --- llvm/include/llvm/TargetParser/Triple.h | 14 ++++++++++++++ llvm/unittests/TargetParser/TripleTest.cpp | 11 +++++++++++ 2 files changed, 25 insertions(+) diff --git a/llvm/include/llvm/TargetParser/Triple.h b/llvm/include/llvm/TargetParser/Triple.h index 0e82dd212f34d..11b76cd183108 100644 --- a/llvm/include/llvm/TargetParser/Triple.h +++ b/llvm/include/llvm/TargetParser/Triple.h @@ -554,15 +554,29 @@ class Triple { return getOSVersion() < VersionTuple(Major, Minor, Micro); } + bool isOSVersionGE(unsigned Major, unsigned Minor = 0, + unsigned Micro = 0) const { + return !isOSVersionLT(Major, Minor, Micro); + } + bool isOSVersionLT(const Triple &Other) const { return getOSVersion() < Other.getOSVersion(); } + bool isOSVersionGE(const Triple &Other) const { + return getOSVersion() >= Other.getOSVersion(); + } + /// Comparison function for checking OS X version compatibility, which handles /// supporting skewed version numbering schemes used by the "darwin" triples. LLVM_ABI bool isMacOSXVersionLT(unsigned Major, unsigned Minor = 0, unsigned Micro = 0) const; + bool isMacOSXVersionGE(unsigned Major, unsigned Minor = 0, + unsigned Micro = 0) const { + return !isMacOSXVersionLT(Major, Minor, Micro); + } + /// Is this a Mac OS X triple. For legacy reasons, we support both "darwin" /// and "osx" as OS X triples. bool isMacOSX() const { diff --git a/llvm/unittests/TargetParser/TripleTest.cpp b/llvm/unittests/TargetParser/TripleTest.cpp index 3e803691cfd1f..df8284d7be66a 100644 --- a/llvm/unittests/TargetParser/TripleTest.cpp +++ b/llvm/unittests/TargetParser/TripleTest.cpp @@ -2630,6 +2630,17 @@ TEST(TripleTest, isMacOSVersionLT) { EXPECT_FALSE(T.isMacOSXVersionLT(10, 15, 0)); } +TEST(TripleTest, isMacOSVersionGE) { + Triple T = Triple("x86_64-apple-macos11"); + EXPECT_FALSE(T.isMacOSXVersionGE(11, 1, 0)); + EXPECT_TRUE(T.isMacOSXVersionGE(10, 15, 0)); + + T = Triple("x86_64-apple-darwin20"); + EXPECT_FALSE(T.isMacOSXVersionGE(11, 1, 0)); + EXPECT_TRUE(T.isMacOSXVersionGE(11, 0, 0)); + EXPECT_TRUE(T.isMacOSXVersionGE(10, 15, 0)); +} + TEST(TripleTest, CanonicalizeOSVersion) { EXPECT_EQ(VersionTuple(10, 15, 4), Triple::getCanonicalVersionForOS(Triple::MacOSX,