Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

Allow modulus in constant expressions #132

Open
wants to merge 1 commit into
base: main
Choose a base branch
from

Conversation

matthewsot
Copy link

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 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.
# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant