3
0
Fork 0
mirror of https://github.com/YosysHQ/yosys synced 2026-07-14 11:15:40 +00:00

long long to int truncation checks

This commit is contained in:
Michael Baier 2026-07-10 14:36:39 +02:00
parent 1dbefdbd49
commit 8f0028652a

View file

@ -538,8 +538,12 @@ struct RTLILFrontendWorker {
upto = true; upto = true;
else if (try_parse_keyword("signed")) else if (try_parse_keyword("signed"))
is_signed = true; is_signed = true;
else if (try_parse_keyword("offset")) else if (try_parse_keyword("offset")) {
start_offset = parse_integer(); long long offset_val = parse_integer();
if (offset_val < INT_MIN || offset_val > INT_MAX)
error("Wire offset %lld out of range before `%s`.", offset_val, error_token());
start_offset = offset_val;
}
else if (try_parse_keyword("input")) { else if (try_parse_keyword("input")) {
port_id = parse_integer(); port_id = parse_integer();
port_input = true; port_input = true;
@ -595,10 +599,18 @@ struct RTLILFrontendWorker {
error("Memory width %lld out of range before `%s`.", width_val, error_token()); error("Memory width %lld out of range before `%s`.", width_val, error_token());
width = width_val; width = width_val;
} }
else if (try_parse_keyword("size")) else if (try_parse_keyword("size")) {
size = parse_integer(); long long size_val = parse_integer();
else if (try_parse_keyword("offset")) if (size_val < INT_MIN || size_val > INT_MAX)
start_offset = parse_integer(); error("Memory size %lld out of range before `%s`.", size_val, error_token());
size = size_val;
}
else if (try_parse_keyword("offset")) {
long long offset_val = parse_integer();
if (offset_val < INT_MIN || offset_val > INT_MAX)
error("Memory offset %lld out of range before `%s`.", offset_val, error_token());
start_offset = offset_val;
}
else if (try_parse_eol()) else if (try_parse_eol())
error("Missing memory ID"); error("Missing memory ID");
else else