Age | Commit message (Collapse) | Author | |
---|---|---|---|
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 | |
2021-12-06 | decl: Remove struct member name from error messages | Michael Forney | |
It could be NULL in some cases. | |||
2021-12-06 | decl: Use strictest alignment when multiple specifiers are present | Michael Forney | |
This is specified by the last sentence in C11 6.7.5p6. | |||
2021-12-06 | decl: Enforce that _Alignas is at least as strict as required by type | Michael Forney | |
2021-11-25 | Add __builtin_unreachable stub | Michael Forney | |
2021-10-25 | decl: Allow alignment > 16 of locals | Michael Forney | |
This is not yet supported by QBE, so for now we allocate a bit extra and choose the address in the allocated region with an aligned address. | |||
2021-10-25 | decl: Allow alignment > 16 of globals and struct members | Michael Forney | |
2021-10-25 | qbe: Add helper function for mkinst | Michael Forney | |
This simplifies the creation of allocation instructions in the start block. | |||
2021-10-25 | eval: Fix int-to-float conversions | Michael Forney | |
Also, add bounds checks for float-to-int conversions. If the integer part can't be represented in the result type, C behavior is undefined. Although this means the result is arbitrary, we need to avoid undefined behavior in cproc itself when given such a program as input. | |||
2021-10-25 | qbe: Use ... to separate named and variadic arguments | Michael Forney | |
This requires a not-yet-upstream QBE patch, and is needed for riscv64 support, since the calling convention may be different depending on whether the argument is named or variadic. | |||
2021-10-25 | Update qbe submodule | Michael Forney | |
2021-10-21 | Document the C23 features we implement | Michael Forney | |
2021-10-21 | expr: Add support for UTF-8 character constants | Michael Forney | |
2021-10-21 | stmt: Allow labels intermixed with declarations in compound statements | Michael Forney | |
C23 relaxes the restriction that labels must always be followed by statements in N2508[0]. [0] http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2508.pdf | |||
2021-10-21 | Rename variable | Michael Forney | |
We will use the name 'label' for a function. | |||
2021-10-21 | Remove obsolete comment | Michael Forney | |
2021-10-21 | expr: Implement binary integer constants | Michael Forney | |
These are in the latest C23 draft. |