Age | Commit message (Collapse) | Author | |
---|---|---|---|
2024-04-02 | map: Use simpler fnv-1a hash function | Michael Forney | |
2024-03-24 | Add support for C23 attribute syntax | Michael Forney | |
Currently, all attributes are ignored. References: https://todo.sr.ht/~mcf/cproc/68 | |||
2022-05-11 | expr: Implement type-checking for casts and assignments | Michael Forney | |
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. | |||
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-09-28 | Skip unnecessary conversion to bool for logical and conditional expressions | Michael Forney | |
As in ede6a5c9, if an expression is used only to control a jnz, we don't need to convert it to a 0 or 1 value. QBE ignores the upper 32-bits of the argument to jnz, so the conversion is still needed for pointer, long, and floating point types (including float since -0 has non-zero bit representation). | |||
2021-07-02 | qbe: Remove repr from struct value and use per-instruction class instead | Michael Forney | |
This way we avoid leaking backend-specific details of type representation outside qbe.c. It also facilitates some future simplifications. | |||
2021-06-30 | stmt: Check that controlling expression is a scalar, and drop unneeded ↵ | Michael Forney | |
conversion The conversion is only needed for floating types. QBE isn't able to optimize it away for integer types yet, so removing this unnecessary conversion has a substantial performance benefit. | |||
2021-03-31 | qbe: Use separate type for block/label | Michael Forney | |
Labels are no longer used as instruction arguments. | |||
2019-07-05 | stmt: Fix conversion of controlling expression to bool | Michael Forney | |
In d875bf74, I accidentally converted the increment expression to bool rather than the controlling expression. Whoops, I should check the updated test case IL more carefully next time. | |||
2019-07-03 | Convert controlling expression of loops to bool | Michael Forney | |
2019-07-02 | stmt: Add specific error message for missing inline asm | Michael Forney | |
2019-05-16 | stmt: continue in do-loop should evaluate controlling expression | Michael Forney | |
2019-04-23 | Fix integer promotion on bit-fields | Michael Forney | |
Fixes #47. | |||
2019-04-21 | Keep track of type properties in type | Michael Forney | |
2019-04-21 | Improve error message | Michael Forney | |
2019-04-06 | Separate unqualified type and qualifiers in struct expr | Michael Forney | |
2019-04-04 | Merge headers into cc.h | Michael Forney | |
2019-03-14 | Abbreviate tag names | Michael Forney | |
2019-03-13 | Make `struct function` opaque | Michael Forney | |
2019-02-24 | Check for negative array lengths/indices | Michael Forney | |
2019-02-16 | Allow labels with same name as typedef | Michael Forney | |
2019-02-15 | Rename emit.h -> backend.h | Michael Forney | |
2019-02-12 | Initial import | Michael Forney | |