Skip to content

Commit 8cd8ebe

Browse files
[MLGO] Use double comparison facilities for reg alloc scoring tests (#88862)
This patch switches from using direct equality (ASSERT_EQ) to the floating point comparison facilities (ASSERT_DOUBLE_EQ) within google test to avoid weird floating point problems. There is at least one downstream that maintains a patch for issues cropping up from the direct equality. https://gitlab.alpinelinux.org/alpine/aports/-/blob/master/main/llvm17/allocscore.patch
1 parent 8137bd9 commit 8cd8ebe

File tree

1 file changed

+14
-13
lines changed

1 file changed

+14
-13
lines changed

llvm/unittests/CodeGen/RegAllocScoreTest.cpp

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -166,19 +166,20 @@ TEST(RegAllocScoreTest, Counts) {
166166
ASSERT_EQ(MF->size(), 2U);
167167
const auto TotalScore =
168168
llvm::calculateRegAllocScore(*MF, MBBFreqMock, IsRemat);
169-
ASSERT_EQ(Freq1, TotalScore.copyCounts());
170-
ASSERT_EQ(2.0 * Freq1 + Freq2, TotalScore.loadCounts());
171-
ASSERT_EQ(Freq1 + Freq2, TotalScore.storeCounts());
172-
ASSERT_EQ(Freq2, TotalScore.loadStoreCounts());
173-
ASSERT_EQ(Freq1, TotalScore.cheapRematCounts());
174-
ASSERT_EQ(Freq2, TotalScore.expensiveRematCounts());
175-
ASSERT_EQ(TotalScore.getScore(),
176-
TotalScore.copyCounts() * CopyWeight +
177-
TotalScore.loadCounts() * LoadWeight +
178-
TotalScore.storeCounts() * StoreWeight +
179-
TotalScore.loadStoreCounts() * (LoadWeight + StoreWeight) +
180-
TotalScore.cheapRematCounts() * CheapRematWeight +
181-
TotalScore.expensiveRematCounts() * ExpensiveRematWeight
169+
ASSERT_DOUBLE_EQ(Freq1, TotalScore.copyCounts());
170+
ASSERT_DOUBLE_EQ(2.0 * Freq1 + Freq2, TotalScore.loadCounts());
171+
ASSERT_DOUBLE_EQ(Freq1 + Freq2, TotalScore.storeCounts());
172+
ASSERT_DOUBLE_EQ(Freq2, TotalScore.loadStoreCounts());
173+
ASSERT_DOUBLE_EQ(Freq1, TotalScore.cheapRematCounts());
174+
ASSERT_DOUBLE_EQ(Freq2, TotalScore.expensiveRematCounts());
175+
ASSERT_DOUBLE_EQ(
176+
TotalScore.getScore(),
177+
TotalScore.copyCounts() * CopyWeight +
178+
TotalScore.loadCounts() * LoadWeight +
179+
TotalScore.storeCounts() * StoreWeight +
180+
TotalScore.loadStoreCounts() * (LoadWeight + StoreWeight) +
181+
TotalScore.cheapRematCounts() * CheapRematWeight +
182+
TotalScore.expensiveRematCounts() * ExpensiveRematWeight
182183

183184
);
184185
}

0 commit comments

Comments
 (0)