aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2023-05-02fix 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-29README.md: Remove outdated note about gmakeJosiah Frentsos
2022-11-29Don't spam mailing list with build failuresMichael Forney
Add a separate list for this.
2022-11-29Implement C23 predefined bool constantsMichael Forney
2022-11-26Check object alignment in only one placeMichael Forney
2022-11-26Move kind-specific decl fields to unionMichael Forney
2022-11-26Keep track of asmname in decl and remove globalname()Michael Forney
2022-11-23Use new spelling of keywords in error messagesMichael Forney
2022-10-30Add cproc(1) manual pageDavid Demelier
2022-08-05expr: Fix constant evaluation of struct member addressMichael 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-05Update qbe submoduleMichael Forney
2022-08-05Use CC=cc with nixosMichael Forney
nixos doesn't have c99.
2022-08-05Add new C23 keywordsMichael Forney
2022-07-12driver: Pass -iquote through to preprocessorMichael Forney
2022-07-12Update CI for new QBE MakefileMichael Forney
2022-06-27qbe: Insert dead block when compiling unreachable code after a jumpMichael 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-13Fix tests for x86_64 -> x86_64-sysv target renameMichael Forney
2022-06-06Rename x86_64 target to include ABIMichael Forney
2022-05-19Add unreachable returns to silence compiler warningsMichael Forney
2022-05-19eval: Fix range check of double during conversion to intMichael 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-13expr: Fix qualifiers of base type during implicit array conversionMichael Forney
2022-05-11expr: Implement type-checking for casts and assignmentsMichael Forney
2022-05-11expr: fix erroneous comparisonNRK
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-09expr: Use integer type for member access intermediate address calculationMichael Forney
2022-04-23Remove use of C11 noreturnMichael Forney
2022-03-22Update qbe submoduleMichael Forney
2022-03-22init: Allow empty initializersMichael Forney
2022-03-22pp: Ignore pragmasMichael Forney
The standard says we should ignore any pragmas that we don't recognize.
2022-03-22Add test for typeof on expression with array typeMichael Forney
2022-03-22decl: StyleMichael Forney
2022-03-22Allow unnamed parameters in function definitionsMichael Forney
2022-03-16LICENSE: Put test data in public domainMichael Forney
2022-03-16LICENSE: Update copyright yearMichael Forney
2022-03-10qbe: Only return 0 from main if it has type intMichael 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-10Add -Wno-maybe-uninitialized to prevent false-positive warningsMichael Forney
2022-02-10Update qbe submoduleMichael Forney
2022-02-10Remove one last use of _NoreturnMichael Forney
2022-02-10qbe: Switch to new unsigned-float conversion operatorsMichael Forney
2022-02-10qbe: Use new unary negation operatorMichael Forney
2022-02-10qbe: Switch to unary negationMichael Forney
This fixes bugs involving floating point negative zero.
2022-02-10README: Remove recommendation of qbe branchMichael Forney
2022-02-10Update qbe submoduleMichael Forney
2022-01-22Handle unary minus specially instead of 0 - xMichael Forney
This is necessary to fix unary negation of floating-point 0 (also depends on a pending qbe patch).
2022-01-22Remove most usage of fixed-width integer typesMichael 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-22eval: Simplify sign/zero extensionMichael Forney
2022-01-22Remove unused type propertiesMichael Forney
2022-01-22Port to C99Michael Forney
2022-01-01Remove dependency on signed integer representationMichael Forney
2021-12-06decl: Fix typedefs with type qualifiersMichael Forney
Previously, the qualifiers were saved, but accidentally ignored when the typedef was referenced.
2021-12-06decl: Simplify struct size calculationMichael Forney