Skip to content

Commit 10dd296

Browse files
committed
[LLVM] Fix Alignment death tests in Release Mode
llvm-svn: 367427
1 parent 7cf5ef0 commit 10dd296

File tree

1 file changed

+53
-43
lines changed

1 file changed

+53
-43
lines changed

llvm/unittests/Support/AlignmentTest.cpp

+53-43
Original file line numberDiff line numberDiff line change
@@ -22,36 +22,20 @@ std::vector<uint64_t> getValidAlignments() {
2222
return Out;
2323
}
2424

25-
// We use a subset of valid alignments for DEATH_TESTs as they are particularly
26-
// slow.
27-
std::vector<uint64_t> getValidAlignmentsForDeathTest() {
28-
return {1, 1ULL << 31, 1ULL << 63};
29-
}
30-
31-
std::vector<uint64_t> getNonPowerOfTwo() { return {3, 10, 15}; }
25+
TEST(AlignmentTest, AlignDefaultCTor) { EXPECT_EQ(Align().value(), 1ULL); }
3226

33-
TEST(Alignment, AlignDefaultCTor) { EXPECT_EQ(Align().value(), 1ULL); }
34-
35-
TEST(Alignment, MaybeAlignDefaultCTor) {
27+
TEST(AlignmentTest, MaybeAlignDefaultCTor) {
3628
EXPECT_FALSE(MaybeAlign().hasValue());
3729
}
3830

39-
TEST(Alignment, ValidCTors) {
31+
TEST(AlignmentTest, ValidCTors) {
4032
for (size_t Value : getValidAlignments()) {
4133
EXPECT_EQ(Align(Value).value(), Value);
4234
EXPECT_EQ((*MaybeAlign(Value)).value(), Value);
4335
}
4436
}
4537

46-
TEST(Alignment, InvalidCTors) {
47-
EXPECT_DEATH((Align(0)), "Value must not be 0");
48-
for (size_t Value : getNonPowerOfTwo()) {
49-
EXPECT_DEATH((Align(Value)), "Alignment is not a power of 2");
50-
EXPECT_DEATH((MaybeAlign(Value)), "Alignment is not 0 or a power of 2");
51-
}
52-
}
53-
54-
TEST(Alignment, CheckMaybeAlignHasValue) {
38+
TEST(AlignmentTest, CheckMaybeAlignHasValue) {
5539
EXPECT_TRUE(MaybeAlign(1));
5640
EXPECT_TRUE(MaybeAlign(1).hasValue());
5741
EXPECT_FALSE(MaybeAlign(0));
@@ -60,27 +44,17 @@ TEST(Alignment, CheckMaybeAlignHasValue) {
6044
EXPECT_FALSE(MaybeAlign().hasValue());
6145
}
6246

63-
TEST(Alignment, CantConvertUnsetMaybe) {
64-
EXPECT_DEATH((MaybeAlign(0).getValue()), ".*");
65-
}
66-
67-
TEST(Alignment, Division) {
47+
TEST(AlignmentTest, Division) {
6848
for (size_t Value : getValidAlignments()) {
69-
if (Value == 1) {
70-
EXPECT_DEATH(Align(Value) / 2, "Can't halve byte alignment");
71-
EXPECT_DEATH(MaybeAlign(Value) / 2, "Can't halve byte alignment");
72-
} else {
49+
if (Value > 1) {
7350
EXPECT_EQ(Align(Value) / 2, Value / 2);
7451
EXPECT_EQ(MaybeAlign(Value) / 2, Value / 2);
7552
}
7653
}
7754
EXPECT_EQ(MaybeAlign(0) / 2, MaybeAlign(0));
78-
79-
EXPECT_DEATH(Align(8) / 0, "Divisor must be positive and a power of 2");
80-
EXPECT_DEATH(Align(8) / 3, "Divisor must be positive and a power of 2");
8155
}
8256

83-
TEST(Alignment, AlignTo) {
57+
TEST(AlignmentTest, AlignTo) {
8458
struct {
8559
uint64_t alignment;
8660
uint64_t offset;
@@ -114,15 +88,14 @@ TEST(Alignment, AlignTo) {
11488
}
11589
}
11690

117-
TEST(Alignment, Log2) {
91+
TEST(AlignmentTest, Log2) {
11892
for (size_t Value : getValidAlignments()) {
11993
EXPECT_EQ(Log2(Align(Value)), Log2_64(Value));
12094
EXPECT_EQ(Log2(MaybeAlign(Value)), Log2_64(Value));
12195
}
122-
EXPECT_DEATH(Log2(MaybeAlign(0)), ".* should be defined");
12396
}
12497

125-
TEST(Alignment, MinAlign) {
98+
TEST(AlignmentTest, MinAlign) {
12699
struct {
127100
uint64_t A;
128101
uint64_t B;
@@ -148,7 +121,7 @@ TEST(Alignment, MinAlign) {
148121
}
149122
}
150123

151-
TEST(Alignment, Encode_Decode) {
124+
TEST(AlignmentTest, Encode_Decode) {
152125
for (size_t Value : getValidAlignments()) {
153126
{
154127
Align Actual(Value);
@@ -166,7 +139,7 @@ TEST(Alignment, Encode_Decode) {
166139
EXPECT_EQ(Expected, Actual);
167140
}
168141

169-
TEST(Alignment, isAligned) {
142+
TEST(AlignmentTest, isAligned) {
170143
struct {
171144
uint64_t alignment;
172145
uint64_t offset;
@@ -187,7 +160,7 @@ TEST(Alignment, isAligned) {
187160
}
188161
}
189162

190-
TEST(Alignment, AlignComparisons) {
163+
TEST(AlignmentTest, AlignComparisons) {
191164
std::vector<uint64_t> ValidAlignments = getValidAlignments();
192165
std::sort(ValidAlignments.begin(), ValidAlignments.end());
193166
for (size_t I = 1; I < ValidAlignments.size(); ++I) {
@@ -240,14 +213,49 @@ TEST(Alignment, AlignComparisons) {
240213
}
241214
}
242215

243-
TEST(Alignment, AssumeAligned) {
216+
TEST(AlignmentTest, AssumeAligned) {
244217
EXPECT_EQ(assumeAligned(0), Align(1));
245218
EXPECT_EQ(assumeAligned(0), Align());
246219
EXPECT_EQ(assumeAligned(1), Align(1));
247220
EXPECT_EQ(assumeAligned(1), Align());
248221
}
249222

250-
TEST(Alignment, ComparisonsWithZero) {
223+
// Death tests reply on assert which is disabled in release mode.
224+
#ifndef NDEBUG
225+
226+
// We use a subset of valid alignments for DEATH_TESTs as they are particularly
227+
// slow.
228+
std::vector<uint64_t> getValidAlignmentsForDeathTest() {
229+
return {1, 1ULL << 31, 1ULL << 63};
230+
}
231+
232+
std::vector<uint64_t> getNonPowerOfTwo() { return {3, 10, 15}; }
233+
234+
TEST(AlignmentDeathTest, Log2) {
235+
EXPECT_DEATH(Log2(MaybeAlign(0)), ".* should be defined");
236+
}
237+
238+
TEST(AlignmentDeathTest, CantConvertUnsetMaybe) {
239+
EXPECT_DEATH((MaybeAlign(0).getValue()), ".*");
240+
}
241+
242+
TEST(AlignmentDeathTest, Division) {
243+
EXPECT_DEATH(Align(1) / 2, "Can't halve byte alignment");
244+
EXPECT_DEATH(MaybeAlign(1) / 2, "Can't halve byte alignment");
245+
246+
EXPECT_DEATH(Align(8) / 0, "Divisor must be positive and a power of 2");
247+
EXPECT_DEATH(Align(8) / 3, "Divisor must be positive and a power of 2");
248+
}
249+
250+
TEST(AlignmentDeathTest, InvalidCTors) {
251+
EXPECT_DEATH((Align(0)), "Value must not be 0");
252+
for (size_t Value : getNonPowerOfTwo()) {
253+
EXPECT_DEATH((Align(Value)), "Alignment is not a power of 2");
254+
EXPECT_DEATH((MaybeAlign(Value)), "Alignment is not 0 or a power of 2");
255+
}
256+
}
257+
258+
TEST(AlignmentDeathTest, ComparisonsWithZero) {
251259
for (size_t Value : getValidAlignmentsForDeathTest()) {
252260
EXPECT_DEATH((void)(Align(Value) == 0), ".* should be defined");
253261
EXPECT_DEATH((void)(Align(Value) != 0), ".* should be defined");
@@ -258,7 +266,7 @@ TEST(Alignment, ComparisonsWithZero) {
258266
}
259267
}
260268

261-
TEST(Alignment, CompareMaybeAlignToZero) {
269+
TEST(AlignmentDeathTest, CompareMaybeAlignToZero) {
262270
for (size_t Value : getValidAlignmentsForDeathTest()) {
263271
// MaybeAlign is allowed to be == or != 0
264272
(void)(MaybeAlign(Value) == 0);
@@ -270,7 +278,7 @@ TEST(Alignment, CompareMaybeAlignToZero) {
270278
}
271279
}
272280

273-
TEST(Alignment, CompareAlignToUndefMaybeAlign) {
281+
TEST(AlignmentDeathTest, CompareAlignToUndefMaybeAlign) {
274282
for (size_t Value : getValidAlignmentsForDeathTest()) {
275283
EXPECT_DEATH((void)(Align(Value) == MaybeAlign(0)), ".* should be defined");
276284
EXPECT_DEATH((void)(Align(Value) != MaybeAlign(0)), ".* should be defined");
@@ -281,4 +289,6 @@ TEST(Alignment, CompareAlignToUndefMaybeAlign) {
281289
}
282290
}
283291

292+
#endif // NDEBUG
293+
284294
} // end anonymous namespace

0 commit comments

Comments
 (0)