Age | Commit message (Collapse) | Author | |
---|---|---|---|
2019-04-15 | Handle static sub-initializers | Michael Forney | |
2019-04-14 | Initial support for loading/storing bit-fields | Michael Forney | |
2019-04-14 | decl: Make signedness of enum types match gcc | Michael Forney | |
2019-04-05 | Fix _Alignas with type specifier | Michael Forney | |
2019-04-03 | Revert "Make member access its own expression type" | Michael Forney | |
This reverts commit b3865e402e426387d4cdccdcd249a02d5ba1bc05. This breaks member address expressions in static initializers. We can support bit-fields by instead adding a "bit-field" expression that affects loads and stores to the underlying object. | |||
2019-04-03 | Make member access its own expression type | Michael Forney | |
2019-03-15 | Start to handle overlapping initializers | Michael Forney | |
2019-03-12 | Allow string literals to initialize any array with character type | Michael Forney | |
2019-03-12 | Implement __builtin_constant_p | Michael Forney | |
2019-03-12 | scan: Accept leading `.` in pp-number | Michael Forney | |
2019-03-12 | Revert "Zero uninitialized decls/returns." | Michael Forney | |
This reverts commit 7722c7593a1a249e1a6d98d84afdff3cb086ca81. This causes problems with large stack allocations, such as https://github.com/madler/pigz/blob/fe822cb435622c43f491013da77b127e9fe851a9/pigz.c#L3403-L3405 | |||
2019-02-27 | Implement __typeof__. | Andrew Chambers | |
2019-02-26 | Zero uninitialized decls/returns. | Andrew Chambers | |
Resolves #12 and #15. | |||
2019-02-24 | scan: Handle escaped newlines | Michael Forney | |
2019-02-22 | Make sure to zero the rest of an array initialized with a string | Michael Forney | |
2019-02-22 | Fix size of incomplete array types initialized with strings | Michael Forney | |
updatearray takes an index, so was allocating an extra byte. | |||
2019-02-22 | Implement __builtin_nanf for empty string literals | Michael Forney | |
2019-02-22 | Implement __builtin_inff | Michael Forney | |
2019-02-22 | Implement __builtin_alloca | Michael Forney | |
2019-02-22 | Fix adding integer to pointer | Michael Forney | |
2019-02-21 | Emit complete union type definitions instead of just using the first member | Michael Forney | |
2019-02-20 | Fix emittype for unions | Michael Forney | |
Thanks to Andrew Chambers for the bug report. | |||
2019-02-20 | eval: Handle nested offset address constants | Michael Forney | |
2019-02-20 | Fix definitions for nested structs | Michael Forney | |
The QBE documentation suggested that the subtypes in an aggregate must be simple types, but they can actually be any type (this is necessary for getting the alignment and padding right between fields adjacent to the nested struct). | |||
2019-02-19 | Implement __builtin_va_copy | Michael Forney | |
2019-02-19 | Add missing lvalue conversions | Michael Forney | |
typeintpromote and typeargpromote assume they are dealing with an unqualified type, and return an incorrect result if they are given a qualified one. So, add an assert here. This was causing const integer types to get promoted to themselves due to missing lvalue conversions. Thanks to Andrew Chambers for the bug report and test case. | |||
2019-02-18 | Simplify test added in 9f964b7281 | Michael Forney | |
2019-02-18 | Fix compatible check for basic types | Michael Forney | |
This check was only supposed to return true for enum types and their corresponding integer type. However, it had the side effect of making 'int' compatible with 'unsigned'. To fix this, introduce a new basic type kind for enums with the same rank as 'int', that is only compatible with itself and the 'int' type with the matching sign. Thanks to Andrew Chambers for the bug report. | |||
2019-02-17 | Make enum types compatible with their corresponding integer type (int) | Michael Forney | |
2019-02-17 | Fix sizeof with unparenthesized postfix or compound literal expression | Michael Forney | |
Determining whether it is a typename or unparenthesized expression requires consuming the '(', so we need to call postfixexpr/parseinit ourselves. | |||
2019-02-17 | Allow computing address of non-lvalue structs/unions | Michael Forney | |
We currently compile '.' member access as taking the address of the struct, adding the offset, and then dereferencing as the member type. However, the '.' operator is allowed on non-lvalues, even though the '&' operator is not. So, we need to handle arbitrary struct/union expressions in objectaddr by just compiling them normally, then converting them to regular pointers (since struct/union values are just pointers with additional type information). | |||
2019-02-17 | Fix returning struct/union types | Michael Forney | |
2019-02-17 | Improve old-style function declaration support | Michael Forney | |
Implement typecompatible for types created with non-prototype function declarations. Require a function definition with parameter declaration list after a declaration with a non-empty identifier list. Detect function definitions with parameter declaration lists containing types incompatible with the promoted types, and report an error for now. | |||
2019-02-16 | Extend char/short types before comparing | Michael Forney | |
Thanks to Andrew Chambers for reporting the issue. | |||
2019-02-16 | Allow labels with same name as typedef | Michael Forney | |
2019-02-14 | Allow initializing array with longer strings | Michael Forney | |
2019-02-14 | Handle compound literals in global initializers | Michael Forney | |
2019-02-14 | When subtracting pointers, divide after subtraction | Michael Forney | |
The pointers might be global addresses, and it doesn't make sense to divide them before subtracting. | |||
2019-02-13 | Ignore qualifiers when parsing initializers | Michael Forney | |
2019-02-13 | Implement __builtin_va_arg | Michael Forney | |
2019-02-13 | Compare to node value first when looking for switch destination | Michael Forney | |
2019-02-13 | Add missing trailing newlines | Michael Forney | |
2019-02-12 | Fix union sizes and member offsets | Michael Forney | |
2019-02-12 | Fix nested arrays | Michael Forney | |
We need to traverse the type hierarchy from inside to out to calculate size/alignment of arrays. | |||
2019-02-12 | Initial import | Michael Forney | |