Merge pull request #1400 from larsclausen/fix-lval-indexed-part-invalid-base-crash

Handle invalid l-value indexed part select bases
This commit is contained in:
Cary R. 2026-06-21 21:11:37 -07:00 committed by GitHub
commit f472a77e3a
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 18 additions and 1 deletions

View File

@ -883,8 +883,10 @@ bool PEIdent::elaborate_lval_net_idx_(Design*des,
calculate_up_do_width_(des, scope, wid);
NetExpr*base = elab_and_eval(des, scope, index_tail.msb, -1);
if (!base)
return false;
if (base && base->expr_type() == IVL_VT_REAL) {
if (base->expr_type() == IVL_VT_REAL) {
cerr << get_fileline() << ": error: Indexed part select base "
"expression for ";
cerr << lv->sig()->name() << "[" << *base;

View File

@ -0,0 +1,9 @@
// Check that invalid indexed part-select l-value bases report an error.
module test;
reg [31:0] a;
initial begin
a[does_not_exist -: 2] = 2'b00;
end
endmodule

View File

@ -345,6 +345,7 @@ sv_lval_concat_uarray_fail1 vvp_tests/sv_lval_concat_uarray_fail1.json
sv_lval_concat_uarray_fail2 vvp_tests/sv_lval_concat_uarray_fail2.json
sv_lval_concat_uarray_fail3 vvp_tests/sv_lval_concat_uarray_fail3.json
sv_lval_concat_uarray_fail4 vvp_tests/sv_lval_concat_uarray_fail4.json
sv_lval_idx_part_invalid_base_down_fail vvp_tests/sv_lval_idx_part_invalid_base_down_fail.json
sv_mixed_assign1 vvp_tests/sv_mixed_assign1.json
sv_mixed_assign2 vvp_tests/sv_mixed_assign2.json
sv_mixed_assign_error1 vvp_tests/sv_mixed_assign_error1.json

View File

@ -0,0 +1,5 @@
{
"type" : "CE",
"source" : "sv_lval_idx_part_invalid_base_down_fail.v",
"iverilog-args" : [ "-g2001" ]
}