mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-02-23 22:15:25 +00:00
[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 llvm-svn: 373196
This commit is contained in:
parent
119416c564
commit
1367c6179c
@ -333,6 +333,14 @@ inline MaybeAlign operator/(MaybeAlign Lhs, uint64_t Divisor) {
|
||||
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
|
||||
|
||||
|
@ -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());
|
||||
|
Loading…
x
Reference in New Issue
Block a user