aboutsummaryrefslogtreecommitdiff
path: root/tests
AgeCommit message (Collapse)Author
2019-04-15expr: Handle compound assignment of bit-fieldsMichael Forney
2019-04-15Handle static sub-initializersMichael Forney
2019-04-14Initial support for loading/storing bit-fieldsMichael Forney
2019-04-14decl: Make signedness of enum types match gccMichael Forney
2019-04-05Fix _Alignas with type specifierMichael Forney
2019-04-03Revert "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-03Make member access its own expression typeMichael Forney
2019-03-15Start to handle overlapping initializersMichael Forney
2019-03-12Allow string literals to initialize any array with character typeMichael Forney
2019-03-12Implement __builtin_constant_pMichael Forney
2019-03-12scan: Accept leading `.` in pp-numberMichael Forney
2019-03-12Revert "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-27Implement __typeof__.Andrew Chambers
2019-02-26Zero uninitialized decls/returns.Andrew Chambers
Resolves #12 and #15.
2019-02-24scan: Handle escaped newlinesMichael Forney
2019-02-22Make sure to zero the rest of an array initialized with a stringMichael Forney
2019-02-22Fix size of incomplete array types initialized with stringsMichael Forney
updatearray takes an index, so was allocating an extra byte.
2019-02-22Implement __builtin_nanf for empty string literalsMichael Forney
2019-02-22Implement __builtin_inffMichael Forney
2019-02-22Implement __builtin_allocaMichael Forney
2019-02-22Fix adding integer to pointerMichael Forney
2019-02-21Emit complete union type definitions instead of just using the first memberMichael Forney
2019-02-20Fix emittype for unionsMichael Forney
Thanks to Andrew Chambers for the bug report.
2019-02-20eval: Handle nested offset address constantsMichael Forney
2019-02-20Fix definitions for nested structsMichael 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-19Implement __builtin_va_copyMichael Forney
2019-02-19Add missing lvalue conversionsMichael 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-18Simplify test added in 9f964b7281Michael Forney
2019-02-18Fix compatible check for basic typesMichael 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-17Make enum types compatible with their corresponding integer type (int)Michael Forney
2019-02-17Fix sizeof with unparenthesized postfix or compound literal expressionMichael Forney
Determining whether it is a typename or unparenthesized expression requires consuming the '(', so we need to call postfixexpr/parseinit ourselves.
2019-02-17Allow computing address of non-lvalue structs/unionsMichael 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-17Fix returning struct/union typesMichael Forney
2019-02-17Improve old-style function declaration supportMichael 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-16Extend char/short types before comparingMichael Forney
Thanks to Andrew Chambers for reporting the issue.
2019-02-16Allow labels with same name as typedefMichael Forney
2019-02-14Allow initializing array with longer stringsMichael Forney
2019-02-14Handle compound literals in global initializersMichael Forney
2019-02-14When subtracting pointers, divide after subtractionMichael Forney
The pointers might be global addresses, and it doesn't make sense to divide them before subtracting.
2019-02-13Ignore qualifiers when parsing initializersMichael Forney
2019-02-13Implement __builtin_va_argMichael Forney
2019-02-13Compare to node value first when looking for switch destinationMichael Forney
2019-02-13Add missing trailing newlinesMichael Forney
2019-02-12Fix union sizes and member offsetsMichael Forney
2019-02-12Fix nested arraysMichael Forney
We need to traverse the type hierarchy from inside to out to calculate size/alignment of arrays.
2019-02-12Initial importMichael Forney