[llvm] r373196 - [Alignment][NFC] Adding a max function.
Guillaume Chatelet via llvm-commits
llvm-commits at lists.llvm.org
Mon Sep 30 02:59:31 PDT 2019
Author: gchatelet
Date: Mon Sep 30 02:59:31 2019
New Revision: 373196
URL: http://llvm.org/viewvc/llvm-project?rev=373196&view=rev
Log:
[Alignment][NFC] Adding a max function.
Summary:
This is patch is part of a series to introduce an Alignment type.
See this thread for context: http://lists.llvm.org/pipermail/llvm-dev/2019-July/133851.html
See this patch for the introduction of the type: https://reviews.llvm.org/D64790
Reviewers: courbet
Subscribers: llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D68201
Modified:
llvm/trunk/include/llvm/Support/Alignment.h
llvm/trunk/unittests/Support/AlignmentTest.cpp
Modified: llvm/trunk/include/llvm/Support/Alignment.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Support/Alignment.h?rev=373196&r1=373195&r2=373196&view=diff
==============================================================================
--- llvm/trunk/include/llvm/Support/Alignment.h (original)
+++ llvm/trunk/include/llvm/Support/Alignment.h Mon Sep 30 02:59:31 2019
@@ -333,6 +333,14 @@ inline MaybeAlign operator/(MaybeAlign L
return Lhs ? Lhs.getValue() / Divisor : MaybeAlign();
}
+inline Align max(MaybeAlign Lhs, Align Rhs) {
+ return Lhs && *Lhs > Rhs ? *Lhs : Rhs;
+}
+
+inline Align max(Align Lhs, MaybeAlign Rhs) {
+ return Rhs && *Rhs > Lhs ? *Rhs : Lhs;
+}
+
#undef ALIGN_CHECK_ISPOSITIVE
#undef ALIGN_CHECK_ISSET
Modified: llvm/trunk/unittests/Support/AlignmentTest.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/unittests/Support/AlignmentTest.cpp?rev=373196&r1=373195&r2=373196&view=diff
==============================================================================
--- llvm/trunk/unittests/Support/AlignmentTest.cpp (original)
+++ llvm/trunk/unittests/Support/AlignmentTest.cpp Mon Sep 30 02:59:31 2019
@@ -227,6 +227,29 @@ TEST(AlignmentTest, AlignComparisons) {
}
}
+TEST(AlignmentTest, Max) {
+ // We introduce std::max here to test ADL.
+ using std::max;
+
+ // Uses llvm::max.
+ EXPECT_EQ(max(MaybeAlign(), Align(2)), Align(2));
+ EXPECT_EQ(max(Align(2), MaybeAlign()), Align(2));
+
+ EXPECT_EQ(max(MaybeAlign(1), Align(2)), Align(2));
+ EXPECT_EQ(max(Align(2), MaybeAlign(1)), Align(2));
+
+ EXPECT_EQ(max(MaybeAlign(2), Align(2)), Align(2));
+ EXPECT_EQ(max(Align(2), MaybeAlign(2)), Align(2));
+
+ EXPECT_EQ(max(MaybeAlign(4), Align(2)), Align(4));
+ EXPECT_EQ(max(Align(2), MaybeAlign(4)), Align(4));
+
+ // Uses std::max.
+ EXPECT_EQ(max(Align(2), Align(4)), Align(4));
+ EXPECT_EQ(max(MaybeAlign(2), MaybeAlign(4)), MaybeAlign(4));
+ EXPECT_EQ(max(MaybeAlign(), MaybeAlign()), MaybeAlign());
+}
+
TEST(AlignmentTest, AssumeAligned) {
EXPECT_EQ(assumeAligned(0), Align(1));
EXPECT_EQ(assumeAligned(0), Align());
More information about the llvm-commits
mailing list