https://github.com/cyndyishida updated https://github.com/llvm/llvm-project/pull/139318
>From 9a733c05d8ab18c1a7c45fc159718994a544f722 Mon Sep 17 00:00:00 2001 From: Cyndy Ishida <cyndy_ish...@apple.com> Date: Fri, 9 May 2025 12:16:14 -0700 Subject: [PATCH 1/2] [llvm][Support] Avoid setting minor/subminor/build in VersionTuple::withMajorReplaced The expectation of this API is to only change the major version of a preexisting version tuple. However, it was actually adding 0's which causes unintended changes in serialization or printing. Instead, check for the existing of the non-major parts of the tuple. --- llvm/include/llvm/Support/VersionTuple.h | 4 +-- llvm/lib/Support/VersionTuple.cpp | 10 +++++++ llvm/unittests/Support/VersionTupleTest.cpp | 30 +++++++++++++++++++++ 3 files changed, 41 insertions(+), 3 deletions(-) diff --git a/llvm/include/llvm/Support/VersionTuple.h b/llvm/include/llvm/Support/VersionTuple.h index 0a4623f049d28..aeb4798209203 100644 --- a/llvm/include/llvm/Support/VersionTuple.h +++ b/llvm/include/llvm/Support/VersionTuple.h @@ -100,9 +100,7 @@ class VersionTuple { /// Return a version tuple that contains a different major version but /// everything else is the same. - VersionTuple withMajorReplaced(unsigned NewMajor) const { - return VersionTuple(NewMajor, Minor, Subminor, Build); - } + VersionTuple withMajorReplaced(unsigned NewMajor) const; /// Return a version tuple that contains only components that are non-zero. VersionTuple normalize() const { diff --git a/llvm/lib/Support/VersionTuple.cpp b/llvm/lib/Support/VersionTuple.cpp index a4224f23b2f94..c6e20f1bd3ef4 100644 --- a/llvm/lib/Support/VersionTuple.cpp +++ b/llvm/lib/Support/VersionTuple.cpp @@ -108,3 +108,13 @@ bool VersionTuple::tryParse(StringRef input) { *this = VersionTuple(major, minor, micro, build); return false; } + +VersionTuple VersionTuple::withMajorReplaced(unsigned NewMajor) const { + if (HasBuild) + return VersionTuple(NewMajor, Minor, Subminor, Build); + if (HasSubminor) + return VersionTuple(NewMajor, Minor, Subminor); + if (HasMinor) + return VersionTuple(NewMajor, Minor); + return VersionTuple(NewMajor); +} diff --git a/llvm/unittests/Support/VersionTupleTest.cpp b/llvm/unittests/Support/VersionTupleTest.cpp index af6c0a7febad5..d498d670fb710 100644 --- a/llvm/unittests/Support/VersionTupleTest.cpp +++ b/llvm/unittests/Support/VersionTupleTest.cpp @@ -47,3 +47,33 @@ TEST(VersionTuple, tryParse) { EXPECT_TRUE(VT.tryParse("1 ")); EXPECT_TRUE(VT.tryParse(".")); } + +TEST(VersionTuple, withMajorReplaced) { + VersionTuple VT(2); + VersionTuple ReplacedVersion = VT.withMajorReplaced(7); + EXPECT_FALSE(ReplacedVersion.getMinor().has_value()); + EXPECT_FALSE(ReplacedVersion.getSubminor().has_value()); + EXPECT_FALSE(ReplacedVersion.getBuild().has_value()); + EXPECT_EQ(VersionTuple(7), ReplacedVersion); + + VT = VersionTuple(100, 1); + ReplacedVersion = VT.withMajorReplaced(7); + EXPECT_TRUE(ReplacedVersion.getMinor().has_value()); + EXPECT_FALSE(ReplacedVersion.getSubminor().has_value()); + EXPECT_FALSE(ReplacedVersion.getBuild().has_value()); + EXPECT_EQ(VersionTuple(7, 1), ReplacedVersion); + + VT = VersionTuple(101, 11, 12); + ReplacedVersion = VT.withMajorReplaced(7); + EXPECT_TRUE(ReplacedVersion.getMinor().has_value()); + EXPECT_TRUE(ReplacedVersion.getSubminor().has_value()); + EXPECT_FALSE(ReplacedVersion.getBuild().has_value()); + EXPECT_EQ(VersionTuple(7, 11, 12), ReplacedVersion); + + VT = VersionTuple(101, 11, 12, 2); + ReplacedVersion = VT.withMajorReplaced(7); + EXPECT_TRUE(ReplacedVersion.getMinor().has_value()); + EXPECT_TRUE(ReplacedVersion.getSubminor().has_value()); + EXPECT_TRUE(ReplacedVersion.getBuild().has_value()); + EXPECT_EQ(VersionTuple(7, 11, 12, 2), ReplacedVersion); +} >From 19e91ecc893129ac34802d74853d97169838f651 Mon Sep 17 00:00:00 2001 From: Cyndy Ishida <cyndy_ish...@apple.com> Date: Fri, 9 May 2025 12:58:40 -0700 Subject: [PATCH 2/2] Fix tests --- clang/test/Driver/xros-driver.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/clang/test/Driver/xros-driver.c b/clang/test/Driver/xros-driver.c index dd2c55ed4e70c..a79b76d5fe0ba 100644 --- a/clang/test/Driver/xros-driver.c +++ b/clang/test/Driver/xros-driver.c @@ -30,8 +30,8 @@ // LINK: "-platform_version" "xros" "1.0.0" "1.0.0" // LINK-SIM: "-platform_version" "xros-simulator" "1.0.0" "1.0.0" -// OBJC-RUNTIME: "-fobjc-runtime=ios-17.0.0.0" -// OBJC-RUNTIME2: "-fobjc-runtime=ios-18.0.0.0" +// OBJC-RUNTIME: "-fobjc-runtime=ios-17.0.0" +// OBJC-RUNTIME2: "-fobjc-runtime=ios-18.0.0" // ARC-NOT: error: // SSP_ON: "-stack-protector" "1" _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits