aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
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-06-02decl: Improve error message for out-of-range enum constantsMichael Forney
2020-05-24qbe: Omit unnecessary add to help QBE's memopt passMichael Forney
2020-04-21driver: Print unknown option before usage messageMichael Forney
2020-04-19Add install target to MakefileMichael Forney
2020-04-19Update qbe submoduleMichael Forney
2020-04-14doc/software: Remove unnotable sectionsMichael Forney
2020-04-14Refer to github issue for oasis porting effortMichael Forney
2020-04-05expr: Just ignore decayed operand in unary `&` operatorMichael Forney
Reusing the decayed expression is more complicated, and only saved one malloc.
2020-04-04type: Remove unnecessary check for TYPEVOIDMichael Forney
There is only one type with this kind, so the equality check above suffices.
2020-04-04expr: Add type checking for equality and relational expressionsMichael Forney
2020-04-04expr: Fix type of '&' operator applied to arrayMichael Forney
It should be a pointer to the array, not to the first element (as it would after implicit conversion without the '&' operator).
2020-03-23driver: Handle -isystemMichael Forney
2020-03-22pp: Don't add leading space for first stringized tokenMichael Forney
2020-03-22pp: Implement variadic macrosMichael Forney
2020-03-22pp: StyleMichael Forney
2020-03-18expr: Slight simplification in function call parsingMichael Forney
2020-03-18pp: Remove some unnecessary conditionalsMichael Forney
It is fine to just pass NULL, or the result of malloc(0) to free().
2020-03-18pp: Fix possible use-after-freeMichael Forney
Restructure the loop slightly to avoid accessing the macro identifier token after we have checked for the open parenthesis; it might belong to a previous macro argument that has since been freed.
2020-03-18pp: Add test for function-like macro with no argument tokensMichael Forney
2020-03-18pp: Don't expand argument tokens if we don't need themMichael Forney
2020-03-18pp: Handle #define without trailing newlineMichael Forney
2020-03-18token: Handle TEOF in tokendescMichael Forney
2020-03-18pp: Minor style changesMichael Forney
2020-03-18pp: Finish '#' operatorMichael Forney
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: Use tokencheck in a few more placesMichael Forney
2020-03-17pp: Fix some whitespace after preprocessingMichael Forney
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-16runtests: Add support for preprocessor testsMichael Forney
2020-03-16decl: Simplify struct tag parsing slightlyMichael 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-02-24Enable -Wpedantic by defaultMichael Forney
2020-01-31eval: Allow casting address constants to integer types in constant expressionsMichael Forney
2020-01-31qbe: Make non-constant initializer expression a proper errorMichael Forney
2020-01-30Add test for sizeof string literalMichael Forney
This was regressed in d889bc80be and fixed in 090e2932ce.
2020-01-30driver: Allow preprocessing C headersMichael Forney
2020-01-30decl: Better check for inline definitionsMichael Forney
2020-01-30runtests: Count number of failing testsMichael Forney
2020-01-30Fix links to issue trackerMichael Forney
2020-01-30decl: Use list link to determine presence in tentative definition listMichael Forney
2020-01-30util: Remove unused listinsertlistMichael Forney
2020-01-30expr: String literals have complete typeMichael Forney
2019-12-27expr: Disallow function/incomplete types and bit-fields in sizeof/_AlignofMichael Forney
2019-12-19Fix issue links in READMEMichael Forney
2019-12-14Update issue tracker linkMichael Forney
2019-11-25Make debian-aarch64 build more robust to gcc version changesMichael Forney