Not sure if this was intentional, but I noticed eval2(...) will compile-time evaluate a modulus but is_const_expr(...) won't. This causes chibicc to try and compile some arrays as VLAs, which was causing problems for me. This change adds ND_MOD to the list of allowed constant expressions.
It's possible I'm missing something, but https://en.cppreference.com/w/c/language/constant_expression seems to imply that all numeric operators (including modulus) should be OK in constant expressions. And ND_DIV is already allowed in the function so it seems ND_MOD should be as well.
Not sure if this was intentional, but I noticed
eval2(...)
will compile-time evaluate a modulus butis_const_expr(...)
won't. This causes chibicc to try and compile some arrays as VLAs, which was causing problems for me. This change addsND_MOD
to the list of allowed constant expressions.It's possible I'm missing something, but https://en.cppreference.com/w/c/language/constant_expression seems to imply that all numeric operators (including modulus) should be OK in constant expressions. And
ND_DIV
is already allowed in the function so it seemsND_MOD
should be as well.