fix bootstrap by renaming constexpr()
The addition of C23 keywords made 'constexpr'
unusable as a function name. This prevents cproc
from bootstrapping. This patch simply renames
the problematic function to 'evalexpr'.
README.md: Remove outdated note about gmake
Don't spam mailing list with build failures
Add a separate list for this.
Implement C23 predefined bool constants
Check object alignment in only one place
Move kind-specific decl fields to union
Keep track of asmname in decl and remove globalname()
Use new spelling of keywords in error messages
expr: Fix constant evaluation of struct member address
fb00ba6978 had the side-effect of introducing an integer to pointer
cast, which was not evaluated as a constant expression. To fix this,
just set the type of the expression.
Use CC=cc with nixos
nixos doesn't have c99.
driver: Pass -iquote through to preprocessor
Update CI for new QBE Makefile
qbe: Insert dead block when compiling unreachable code after a jump
QBE will optimize out these blocks, and the dead block prevents the
possibility of NULL value usage when further control flow follows.
Fixes #80.
Fix tests for x86_64 -> x86_64-sysv target rename
Rename x86_64 target to include ABI
Add unreachable returns to silence compiler warnings
eval: Fix range check of double during conversion to int
2⁶⁴-1 and 2⁶³-1 are not representable as double and get rounded to
2⁶⁴ and 2⁶³ respectively, which are outside the range of 64-bit
[u]int.
This causes undefined behavior when a constant expression is evaluated
that involves a conversion of a very large or small value to an
integer type.
To fix this, change the > to >= and use constants representable as
double.