Age | Commit message (Collapse) | Author | |
---|---|---|---|
2023-05-02 | fix bootstrap by renaming constexpr() | Quentin Carbonneaux | |
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'. | |||
2022-11-29 | README.md: Remove outdated note about gmake | Josiah Frentsos | |
2022-11-29 | Don't spam mailing list with build failures | Michael Forney | |
Add a separate list for this. | |||
2022-11-29 | Implement C23 predefined bool constants | Michael Forney | |
2022-11-26 | Check object alignment in only one place | Michael Forney | |
2022-11-26 | Move kind-specific decl fields to union | Michael Forney | |
2022-11-26 | Keep track of asmname in decl and remove globalname() | Michael Forney | |
2022-11-23 | Use new spelling of keywords in error messages | Michael Forney | |
2022-10-30 | Add cproc(1) manual page | David Demelier | |
2022-08-05 | expr: Fix constant evaluation of struct member address | Michael Forney | |
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. | |||
2022-08-05 | Update qbe submodule | Michael Forney | |
2022-08-05 | Use CC=cc with nixos | Michael Forney | |
nixos doesn't have c99. | |||
2022-08-05 | Add new C23 keywords | Michael Forney | |
2022-07-12 | driver: Pass -iquote through to preprocessor | Michael Forney | |
2022-07-12 | Update CI for new QBE Makefile | Michael Forney | |
2022-06-27 | qbe: Insert dead block when compiling unreachable code after a jump | Michael Forney | |
QBE will optimize out these blocks, and the dead block prevents the possibility of NULL value usage when further control flow follows. Fixes #80. | |||
2022-06-13 | Fix tests for x86_64 -> x86_64-sysv target rename | Michael Forney | |
2022-06-06 | Rename x86_64 target to include ABI | Michael Forney | |
2022-05-19 | Add unreachable returns to silence compiler warnings | Michael Forney | |
2022-05-19 | eval: Fix range check of double during conversion to int | Michael Forney | |
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. | |||
2022-05-13 | expr: Fix qualifiers of base type during implicit array conversion | Michael Forney | |
2022-05-11 | expr: Implement type-checking for casts and assignments | Michael Forney | |
2022-05-11 | expr: fix erroneous comparison | NRK | |
as long as `size_t`'s conversion rank is >= `int` this check would work out fine. but in case size_t happens to be less than int (which I believe is valid under the C standard) then comparison will take place in `signed int` and the operand `-1` will not get implicitly converted to SIZE_MAX. explicitly cast it to size_t to avoid such issues. | |||
2022-05-09 | expr: Use integer type for member access intermediate address calculation | Michael Forney | |
2022-04-23 | Remove use of C11 noreturn | Michael Forney | |
2022-03-22 | Update qbe submodule | Michael Forney | |
2022-03-22 | init: Allow empty initializers | Michael Forney | |
2022-03-22 | pp: Ignore pragmas | Michael Forney | |
The standard says we should ignore any pragmas that we don't recognize. | |||
2022-03-22 | Add test for typeof on expression with array type | Michael Forney | |
2022-03-22 | decl: Style | Michael Forney | |
2022-03-22 | Allow unnamed parameters in function definitions | Michael Forney | |
2022-03-16 | LICENSE: Put test data in public domain | Michael Forney | |
2022-03-16 | LICENSE: Update copyright year | Michael Forney | |
2022-03-10 | qbe: Only return 0 from main if it has type int | Michael Forney | |
Though C11 5.1.2.2.1 says that main must have a return type of int, we could still encounter a program which declares it as something else. This is undefined behavior, but we should not produce invalid QBE IL in this case. Also, 5.1.2.2.3 specifies that the implicit return 0 should only apply when main's return type is compatible with int. | |||
2022-02-10 | Add -Wno-maybe-uninitialized to prevent false-positive warnings | Michael Forney | |
2022-02-10 | Update qbe submodule | Michael Forney | |
2022-02-10 | Remove one last use of _Noreturn | Michael Forney | |
2022-02-10 | qbe: Switch to new unsigned-float conversion operators | Michael Forney | |
2022-02-10 | qbe: Use new unary negation operator | Michael Forney | |
2022-02-10 | qbe: Switch to unary negation | Michael Forney | |
This fixes bugs involving floating point negative zero. | |||
2022-02-10 | README: Remove recommendation of qbe branch | Michael Forney | |
2022-02-10 | Update qbe submodule | Michael Forney | |
2022-01-22 | Handle unary minus specially instead of 0 - x | Michael Forney | |
This is necessary to fix unary negation of floating-point 0 (also depends on a pending qbe patch). | |||
2022-01-22 | Remove most usage of fixed-width integer types | Michael Forney | |
We only require a type of at least 64 bits, so just use unsigned long long. Only siphash remains as the last user of uint64_t. | |||
2022-01-22 | eval: Simplify sign/zero extension | Michael Forney | |
2022-01-22 | Remove unused type properties | Michael Forney | |
2022-01-22 | Port to C99 | Michael Forney | |
2022-01-01 | Remove dependency on signed integer representation | Michael Forney | |
2021-12-06 | decl: Fix typedefs with type qualifiers | Michael Forney | |
Previously, the qualifiers were saved, but accidentally ignored when the typedef was referenced. | |||
2021-12-06 | decl: Simplify struct size calculation | Michael Forney | |