aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2024-03-23Change type of u8 string literals to unsigned char for C23Michael Forney
2024-03-23Remove qbe submoduleMichael Forney
2024-03-22CI: Use upstream QBE in Debian aarch64 buildMichael Forney
This was accidentally left as my personal branch when all the other builds were updated.
2024-03-22builds: Use freebsd/latestMichael Forney
2024-03-22Implement C23 nullptr constantMichael Forney
2024-03-22pp: Fix nullptr keywordMichael Forney
2024-03-22doc/c23: Document typeof/typeof_unqualMichael Forney
2024-03-22decl: Implement typeof_unqualMichael Forney
2024-03-22doc/c23: Fix links to enum documentsMichael Forney
2024-03-22doc/extensions: Remove extensions now standardized in C23Michael Forney
2024-03-22Use C23 spelling of typeof in testsMichael Forney
2024-03-21decl: Add support for enums with large values and fixed underlying typesMichael Forney
Fixes: https://todo.sr.ht/~mcf/cproc/64
2024-03-16Store enum underlying type in base fieldMichael Forney
This will facilitate supporting underlying types other than int or unsigned, possible in C23. References: https://todo.sr.ht/~mcf/cproc/64
2024-03-16expr: Work around qualified array types for nowMichael Forney
This should be fixed so that array types are never qualified, but for now, just union the array type qualifiers with the element type qualifiers. See issue 79 for more details.
2024-03-16Fix C23 empty initializersMichael Forney
These should should act as zero initializers, but since init==NULL was used to mean both "no initializer" and "empty initializer", empty initializers weren't zero-initializing the variable.
2024-01-26doc/software: Fix double negativeMichael Forney
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.