aboutsummaryrefslogtreecommitdiff
path: root/tools
AgeCommit message (Collapse)Author
2025-03-15tools/test.sh: test the native architecture without QEMUAntonio Terceiro
While at it, extract most duplicated code across targets into a function.
2025-03-15tools/test.sh: allow running against installed packageAntonio Terceiro
If $bin is set in the environment, use it instead of using `qbe` from the source tree. The same for $binref. This supports the following use cases: - I have a qbe package installed, and I want to test my local changes with the installed packages as a reference: $ binref=/usr/bin/qbe ./tools/test.sh all - I want to test the installed qbe against new tests that I have written, to reproduce a bug: $ bin=/usr/bin/qbe ./tools/test.sh test/newtest.ssa In Debian, we also run tests against the installed package when dependencies change, etc. We will also run on several architectures where the necessary cross compilers might not be available. So make tests that cannot be run because of a missing compiler exit with 77, signaling to Debian's autopkgtest that the test is skipped.
2025-03-15Makefile: add explicit target to test the x86_64 backendAntonio Terceiro
When developing on an arm64 machine, it's useful to be able to test the x86_64 target.
2024-06-17qbe has its own magicQuentin Carbonneaux
2024-04-12add common linkage for dataQuentin Carbonneaux
2024-04-09mgen: match automatons and C generationQuentin Carbonneaux
The algorithm to generate matchers took a long time to be discovered and refined to its present version. The rest of mgen is mostly boring engineering. Extensive fuzzing ensures that the two core components of mgen (tables and matchers generation) are correct on specific problem instances.
2024-04-09fuse ac rules in ins-tree matchingQuentin Carbonneaux
The initial plan was to have one matcher per ac-variant, but that leads to way too much generated code. Instead, we can fuse ac variants of the rules and have a smarter matching algorithm to recover bound variables.
2024-04-09does not look too goodQuentin Carbonneaux
2024-04-09modulo ac matching and more testsQuentin Carbonneaux
2024-04-09wip ins-tree matcherQuentin Carbonneaux
2024-01-29Print total number of tests run to get a better view of how much is broken.v1.2Tobias Heider
2023-08-18test.sh fixes for devuan linuxQuentin Carbonneaux
2023-08-18file,loc become dbgfile,dbglocQuentin Carbonneaux
2023-06-06implement line number info trackingThomas Bracht Laumann Jespersen
Support "file" and "loc" directives. "file" takes a string (a file name) assigns it a number, sets the current file to that number and records the string for later. "loc" takes a single number and outputs location information with a reference to the current file.
2022-12-25link pthread in testsQuentin Carbonneaux
2022-12-14new blit instructionQuentin Carbonneaux
2022-11-27new hlt block terminatorQuentin Carbonneaux
It is handy to express when the end of a block cannot be reached. If a hlt terminator is executed, it traps the program. We don't go the llvm way and specify execution semantics as undefined behavior.
2022-10-03new arm64_apple targetQuentin Carbonneaux
Should make qbe work on apple arm-based hardware.
2022-10-03parse sb,ub,sh,uh abi typesQuentin 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-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-03-15detect target in testsQuentin Carbonneaux
2022-03-10new abi stress testQuentin Carbonneaux
2022-02-25disable pie for rv64 testsQuentin Carbonneaux
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.
2022-01-28update token hash paramsQuentin Carbonneaux
2022-01-23Add a negation instructionEyal Sawady
Necessary for floating-point negation, because `%result = sub 0, %operand` doesn't give the correct sign for 0/-0.
2021-10-26use unified diff format for test outputMichael Forney
This make it easier to understand the differences.
2021-10-17use -static when cross-compiling testsQuentin Carbonneaux
2021-08-23test: include exit status in test failure reasonMichael Forney
This was intended, but was missing due to a typo in the test status variable.
2021-03-18use toolchain to determine aarch64 sysroot pathMichael Forney
2021-03-18Revert "arm64: try qemu-system-aarch64"Michael Forney
This reverts commit be3a67a7f5079f30b0ccc696d549fd03a2dbbad1. qemu-system-aarch64 is a full system emulator and is not suitable for running the qbe test suite (at least without a kernel and root filesystem).
2021-03-02disable pie for arm64 testsQuentin Carbonneaux
2021-03-02arm64: try qemu-system-aarch64Reini Urban
2021-03-02add data $name = section "section" ...Drew DeVault
This allows you to explicitly specify the section to emit the data directive for, allowing for sections other than .data: for example, .bss or .init_array.
2019-05-05add asm diffing in test scriptQuentin Carbonneaux
2019-03-14Rearrange the fields in Ins so the bit-fields get packed togetherMichael Forney
2017-10-07fix compiler command in testccEugene Sharygin
This commit adds missing quotation marks around the argument to the function, and changes the value of `-x' option to `c` (lowercase) as per GCC manual [1]. [1]: https://gcc.gnu.org/onlinedocs/gcc-7.2.0/gcc/Overall-Options.html
2017-09-25adjust test.sh for ubuntuQuentin Carbonneaux
2017-04-11unscrew freebsd testsQuentin Carbonneaux
2017-04-09always disable pie in testsQuentin Carbonneaux
2017-04-08misc fixes for osxQuentin Carbonneaux
With the default toolchain, it looks like we have to make sure all symbols are loaded using rip-relative addressing.
2017-04-08add cross testing for arm64Quentin Carbonneaux
2017-02-15add support for closure callsQuentin Carbonneaux
Compiling languages with closures often requires passing an extra environment parameter to the called function. One solution is to use a convention, and reserve, say, the first argument for that purpose. However, that makes binding to C a little less smooth. Alternatively, QBE now provides a way to remain fully ABI compatible with C by having a "hidden" environment argument (marked with the keyword 'env'). Calling a function expecting an environment from C will make the contents of the environment undefined, but the normal arguments will be passed without alteration. Conversely, calling a C function like it is a closure by passing it an environemnt will work smoothly.
2017-02-10tests for variable argument listsQuentin Carbonneaux
2017-02-10support variable argument listsQuentin Carbonneaux
This change is backward compatible, calls to "variadic" functions (like printf) must now be annotated (with ...).
2017-01-04attempt to fix cc flags in testsQuentin Carbonneaux
2017-01-04more performance improvements in the parserQuentin Carbonneaux
2016-12-31minor bugs in lexh toolQuentin Carbonneaux