Work around `std::reverse` miscompilation with empty range

This causes problems when compiling with fuzzing instrumenation enabled.
This commit is contained in:
Robert O'Callahan 2026-01-28 18:16:24 +00:00
parent bd7f2d9ba4
commit 13d9fffdb9
1 changed files with 4 additions and 2 deletions

View File

@ -286,6 +286,7 @@ struct RTLILFrontendWorker {
if (width > MAX_CONST_WIDTH)
error("Constant width %lld out of range before `%s`.", width, error_token());
bits.reserve(width);
int start_idx = idx;
while (true) {
RTLIL::State bit;
switch (line[idx]) {
@ -300,8 +301,9 @@ struct RTLILFrontendWorker {
bits.push_back(bit);
++idx;
}
done:
std::reverse(bits.begin(), bits.end());
done:
if (start_idx < idx)
std::reverse(bits.begin(), bits.end());
if (GetSize(bits) > width)
bits.resize(width);