aboutsummaryrefslogtreecommitdiff
path: root/cc.h
AgeCommit message (Collapse)Author
2021-07-02qbe: Remove repr from struct value and use per-instruction class insteadMichael Forney
This way we avoid leaking backend-specific details of type representation outside qbe.c. It also facilitates some future simplifications.
2021-07-01decl: Check that the flexible array member (if present) is lastMichael Forney
2021-06-28Add stringconcat function to concatenate adjacent string literalsMichael Forney
This function also ensures that the string prefixes (if any) are compatible. It should make it easier to implement wide string support.
2021-04-23Make some static data constMichael Forney
2021-04-23targ: Use correct char signedness for aarch64 and riscv64Michael Forney
2021-04-08Remove unused mkswitch declarationMichael Forney
2021-03-31qbe: Use second argument of call/arg to store type nameMichael Forney
2021-03-31qbe: Use separate type for block/labelMichael Forney
Labels are no longer used as instruction arguments.
2020-06-03Revert "decl: Allow out-of-range enum constants when they don't change type"Michael Forney
This reverts commit 6229709b8ae21d7722fef48ad8a9f2f10b900030. I still don't understand how out-of-range enum constants are supposed to work.
2020-06-03decl: Allow out-of-range enum constants when they don't change typeMichael Forney
gcc and clang allow enum constants out of range of int, but this means that the type of enumerator may differ inside and outside the enum specifier. Instead, only allow out-of-range enum constants when their types are compatible with the final enum type.
2020-03-17token: Add TOTHER for other non-whitespace tokensMichael Forney
This is for any non-whitespace character that doesn't match any other token categories, and could be valid if stringified, or the preprocessor is used by itself.
2020-03-17pp: Add support for macro definition and expansionMichael Forney
The token pasting operator `##` still needs to be implemented.
2020-03-16scan: Keep track of whether tokens had preceeding whitespaceMichael Forney
2020-03-16token: Add tokencheck utility functionMichael Forney
This function is like expect(), but operates on a specific token and does not read the following token.
2020-03-16token: Rename some functionsMichael Forney
2020-03-16Allow multiple inputs to main compiler processMichael Forney
This way, we can implement -include in the driver by just passing an additional input to the compiler.
2020-01-30decl: Better check for inline definitionsMichael Forney
2020-01-30decl: Use list link to determine presence in tentative definition listMichael Forney
2019-08-13scan: Add `::` operatorMichael Forney
This is needed for attributes, added in C2X (n2335).
2019-07-03Implement no-op __builtin_expectMichael Forney
2019-06-27Implement prefixed character constantsMichael Forney
2019-06-27Pass target to cc-qbeMichael Forney
2019-05-24Add __attribute__ keywordMichael Forney
This will be needed for weak references and hidden visibility.
2019-05-15Implement asm labelsMichael Forney
2019-05-13Use enum type for expect argumentMichael Forney
2019-05-12eval: Keep track of kind of constant expression we are evaluatingMichael Forney
When we are evaluating an arithmetic constant expression, we don't want to indroduce static data definitions for string or compound literals. Fixes #59.
2019-04-29Add __asm__ keywordMichael Forney
2019-04-24Use a common member for expression baseMichael Forney
2019-04-24Use enum type for expr->builtin.kindMichael Forney
2019-04-24Use a common member for expression opMichael Forney
2019-04-24Free functions when we're done with themMichael Forney
2019-04-23Fix integer promotion on bit-fieldsMichael Forney
Fixes #47.
2019-04-23expr: Use tokstr in ++/-- operator error messagesMichael Forney
2019-04-21Keep track of type properties in typeMichael Forney
2019-04-20Make basic types have their own kindMichael Forney
2019-04-20Shorten some names with 'long'Michael Forney
2019-04-17htab -> mapMichael Forney
2019-04-17Improve token descriptions in errorsMichael Forney
2019-04-17Implement bit-field initializersMichael Forney
2019-04-16Implement __builtin_types_compatible_pMichael Forney
This is used by util-linux.
2019-04-14Initial support for loading/storing bit-fieldsMichael Forney
2019-04-13Revert "Fold constexpr function into intconstexpr"Michael Forney
This reverts commit a080e36dac54b82beef63580f36cb0da9ad31788.
2019-04-06Track type qualifiers separatelyMichael Forney
Using a special qualified type kind has a number of problems: - Important fields such as size, align, and incomplete may not be set, since the qualified type was created before a struct was completed. - When we don't care about type qualifiers (which is the usual case), we have to explicitly unqualify the type which is annoying and error-prone. Instead, in derived types, keep track of the qualifiers of the base type alongside the base type (similar to what is done for members, parameters, declarations, and expressions in the past few commits).
2019-04-06Separate unqualified type and qualifiers in struct declMichael Forney
2019-04-06Separate unqualified type and qualifiers in struct memberMichael Forney
2019-04-06Separate unqualified type and qualifiers in struct paramMichael Forney
2019-04-06Separate unqualified type and qualifiers in struct exprMichael Forney
2019-04-05expr: Use separate fields for lvalue and decayed instead of flagsMichael Forney
2019-04-04Move type definitions to the top of cc.hMichael Forney
2019-04-04Use `enum tokenkind` for op in struct exprMichael Forney