mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-21 18:22:53 +01:00
[FuzzMutate] Fix getWeight of InstDeleterIRStrategy
The comment states the following, for calculating the Line variable: > Draw a line starting from when we only have 1k left and increasing > linearly to double the current weight. However, the value was not calculated as described. Instead, it would result in a negative value, which resulted in the function always returning 0 afterwards. ``` // Invariant: CurrentSize <= MaxSize - 200 // Invariant: CurrentWeight >= 0 int Line = (-2 * CurrentWeight) * (MaxSize - CurrentSize + 1000); // {Line <= 0} ``` This commit fixes the issue and linearly interpolates as described. Patch by Loris Reiff. Thanks! Differential Revision: https://reviews.llvm.org/D96207
This commit is contained in:
parent
42052632ff
commit
880a1f20ab
@ -143,7 +143,10 @@ uint64_t InstDeleterIRStrategy::getWeight(size_t CurrentSize, size_t MaxSize,
|
||||
return CurrentWeight ? CurrentWeight * 100 : 1;
|
||||
// Draw a line starting from when we only have 1k left and increasing linearly
|
||||
// to double the current weight.
|
||||
int Line = (-2 * CurrentWeight) * (MaxSize - CurrentSize + 1000);
|
||||
int64_t Line = (-2 * static_cast<int64_t>(CurrentWeight)) *
|
||||
(static_cast<int64_t>(MaxSize) -
|
||||
static_cast<int64_t>(CurrentSize) - 1000) /
|
||||
1000;
|
||||
// Clamp negative weights to zero.
|
||||
if (Line < 0)
|
||||
return 0;
|
||||
|
Loading…
Reference in New Issue
Block a user