summary refs log tree commit diff
AgeCommit message (Collapse)Author
2022-08-31fix some variadic calls in test/abi8.ssaQuentin Carbonneaux
2022-08-31regenerate test/vararg2.ssaQuentin Carbonneaux
- update the test generation script to match some manual changes - fix some variadic calls to printf - add a test case where an odd number of slots is used on the stack before varargs
2022-07-01Reject multiple section definition for a symbolRoberto E. Vargas Caballero
2022-07-01Add qbe identifier in error stringsRoberto E. Vargas Caballero
When qbe is used with other tools is a bit hard to identify what is the tool that is generating the error. Adding an identifier at the beginning of the line makes much easier to identify the tool generating the error.
2022-07-01Makefile: Avoid double macro expansion in targetsRoberto E. Vargas Caballero
POSIX specification stays: string1 = [string2] ... Macro expansions in string1 of macro definition lines shall be evaluated when read. Macro expansions in string2 of macro definition lines shall be performed when the macro identified by string1 is expanded in a rule or command. It means that recursive macro expansion is not guaranteed to work in a portable Make. Also, as make is a declarative language makes more sense to declare your targets as a primary concern instead of derivating them from a informational macro like SRC that is only used in a rule command.
2022-06-29Fix minor typos in IL docSimon Heath
2022-06-16install with install -m755 v1.0Quentin Carbonneaux
2022-06-14tools/test.sh: Without a TARGET, use $CC if definedHaelwenn (lanodan) Monnier
cc can be absent in Gentoo to make sure the right compiler is picked, for example when clang is preferred or when cross-compiling.
2022-06-14Makefile: POSIXifyilliliti
Makefile now compatible with gmake, bmake, smake and pdpmake.
2022-06-14do not fold cnst+cnst in amd64's iselQuentin Carbonneaux
This may cause invalid assembly to be generated and is not all that useful anyway after constant folding has run.
2022-06-14rv64: implement Oswap for floating-point typesAlexey Yerin
2022-06-14refine assertion in liveness analysisQuentin Carbonneaux
We were redundantly checking cardinality in a way that prevented fp regs from ever being globally live. We now check that the live regs after a return are exactly the globally live ones.
2022-05-12install in /usr/local by defaultQuentin Carbonneaux
2022-05-12tighten function definition specQuentin Carbonneaux
2022-05-12use an alias for \n in the il specQuentin Carbonneaux
2022-05-11avoid folding overflowing divisionsQuentin Carbonneaux
Thanks to Paul Ouellette for reporting.
2022-05-11document spacing in il referenceQuentin Carbonneaux
2022-05-10add installation notesQuentin Carbonneaux
2022-05-10arm64: fix maximum immediate size for small loads/storesMichael Forney
The maximum immediate size for 1, 2, 4, and 8 byte loads/stores is 4095, 8190, 16380, and 32760 respectively[0][1][2]. [0] https://developer.arm.com/documentation/dui0802/a/A64-Data-Transfer-Instructions/LDRB--immediate- [1] https://developer.arm.com/documentation/dui0802/a/A64-Data-Transfer-Instructions/LDRH--immediate- [2] https://developer.arm.com/documentation/dui0802/a/A64-Data-Transfer-Instructions/LDR--immediate-
2022-04-11move nx stack annotation to gas.cQuentin Carbonneaux
2022-04-11Close input file after done readingDaniel Xu
Leaks resources to not close. Signed-off-by: Daniel Xu <dxu@dxuuu.xyz>
2022-04-11do not leak type fieldsQuentin Carbonneaux
Thanks to Daniel Xu for reporting.
2022-03-17amd64: restore previous name of amd64_sysv targetMichael Forney
2022-03-17fix return for big aggregatesQuentin Carbonneaux
The recent changes in arm and riscv typclass() set ngp to 1 when a struct is returned via a caller-provided buffer. This interacts bogusly with selret() that ends up declaring a gp register live when none is set in the returning sequence. The fix is simply to set cty to zero (all registers dead) in case a caller- provided buffer is used.
2022-03-15detect target in testsQuentin Carbonneaux
2022-03-15new -t? flag to print default targetQuentin Carbonneaux
2022-03-15homogenize riscv and arm abisQuentin Carbonneaux
2022-03-15support env calls on arm64Quentin Carbonneaux
The x9 register is used for the env parameter.
2022-03-15fix register count in riscv argregsQuentin Carbonneaux
2022-03-14dynamic stack allocs for arm64Quentin Carbonneaux
I also moved some isel logic that would have been repeated a third time in util.c.
2022-03-14add rv64/ to READMEQuentin Carbonneaux
2022-03-14output symbol type and sizeQuentin Carbonneaux
That is not available on osx so I tweaked the gas.c api a little to conditionally output the two directives.
2022-03-14improve consistency in abisQuentin Carbonneaux
2022-03-14arm64/abi: fix big aggregates passed on the stackQuentin Carbonneaux
The riscv test abi8.ssa caught a bug in the arm backend. It turns out we were using the wrong class when loading pointers to aggregates from the stack. The fix is simple and mirrors what is done in the riscv abi.
2022-03-11dust off antique .tagQuentin Carbonneaux
2022-03-10rv64: plug holes in the abiQuentin Carbonneaux
Many things got fixed, but the most notable change is the proper support of floating point types in aggregates. Minor fixes: - selpar() did not deal correctly with Cfpint - typclass() was reading out of bounds in the gp/fp arrays - support for env calls
2022-03-10two new tests in abi5.ssaQuentin Carbonneaux
They are meant to exercise the hardware floating-point calling convention of the risc-v target.
2022-03-10new abi stress testQuentin Carbonneaux
2022-03-08flag types defined as unionsQuentin Carbonneaux
The risc-v abi needs to know if a type is defined as a union or not. We cannot use nunion to obtain this information because the risc-v abi made the unfortunate decision of treating union { int i; } differently from int i; So, instead, I introduce a single bit flag 'isunion'.
2022-03-08cosmeticsQuentin Carbonneaux
2022-03-07doc: export function main in hello world examplelincoln auster [they/them]
This enables the example to be compiled and run as-is, without any additional modification.
2022-02-27rv64: formatting and bug fix in epilogueQuentin Carbonneaux
2022-02-27doc: Add missing neg entry to indexScott Graham
2022-02-27rv64: cosmetics in iselQuentin Carbonneaux
2022-02-25disable pie for rv64 testsQuentin Carbonneaux
2022-02-25improve consistency in arm64 and rv64 abisQuentin Carbonneaux
2022-02-24parse: allow string after first data itemPaul Ouellette
2022-02-24doc: minor fixesPaul Ouellette
2022-02-24fix folding of shifts of word operand by >32Paul Ouellette
2022-02-17add rv64 backendMichael Forney
It is mostly complete, but still has a few ABI bugs when passing floats in structs, or when structs are passed partly in register, and partly on stack.