| Commit message (Collapse) | Author | Age | Files | Lines | |
|---|---|---|---|---|---|
| * | Replace pointer casts with calls to (read|write)(16|32|64)le. | Edmund Grimley Evans | 2015-11-19 | 1 | -19/+14 |
| | | | | | | This stops UBSan from giving runtime misaligned address errors and might eventually allow building on a non-little-endian host. | ||||
| * | Merge the integer members of union CValue into "uint64_t i". | Edmund Grimley Evans | 2015-11-17 | 1 | -13/+7 |
| | | |||||
| * | arm64-gen.c: Avoid some cases of undefined behaviour. | Edmund Grimley Evans | 2015-11-09 | 1 | -44/+55 |
| | | | | | Also make some functions more portable. | ||||
| * | Enable variable-length arrays on arm64. | Edmund Grimley Evans | 2015-10-31 | 1 | -3/+11 |
| | | | | | | arm64-gen.c: Implement gen_vla_sp_save, gen_vla_sp_restore, gen_vla_alloc. tests/Makefile: Run vla_test on arm64. | ||||
| * | Revert "fix-mixed-struct (patch by Pip Cet)" | gus knight | 2015-07-29 | 1 | -10/+1 |
| | | | | | This reverts commit 4e04f67c94c97b4f28a4d73759a0ad38fb3a10f7. Requested by grischka. | ||||
| * | Revert all of my changes to directories & codingstyle. | gus knight | 2015-07-29 | 1 | -0/+1846 |
| | | |||||
| * | Reorganize the source tree. | gus knight | 2015-07-27 | 1 | -1846/+0 |
| | | | | | | | | | | | * Documentation is now in "docs". * Source code is now in "src". * Misc. fixes here and there so that everything still works. I think I got everything in this commit, but I only tested this on Linux (Make) and Windows (CMake), so I might've messed something up on other platforms... | ||||
| * | fix-mixed-struct (patch by Pip Cet) | seyko | 2015-05-14 | 1 | -1/+10 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Jsut for testing. It works for me (don't break anything) Small fixes for x86_64-gen.c in "tccpp: fix issues, add tests" are dropped in flavor of this patch. Pip Cet: Okay, here's a first patch that fixes the problem (but I've found another bug, yet unfixed, in the process), though it's not particularly pretty code (I tried hard to keep the changes to the minimum necessary). If we decide to actually get rid of VT_QLONG and VT_QFLOAT (please, can we?), there are some further simplifications in tccgen.c that might offset some of the cost of this patch. The idea is that an integer is no longer enough to describe how an argument is stored in registers. There are a number of possibilities (none, integer register, two integer registers, float register, two float registers, integer register plus float register, float register plus integer register), and instead of enumerating them I've introduced a RegArgs type that stores the offsets for each of our registers (for the other architectures, it's simply an int specifying the number of registers). If someone strongly prefers an enum, we could do that instead, but I believe this is a place where keeping things general is worth it, because this way it should be doable to add SSE or AVX support. There is one line in the patch that looks suspicious: } else { addr = (addr + align - 1) & -align; param_addr = addr; addr += size; - sse_param_index += reg_count; } break; However, this actually fixes one half of a bug we have when calling a function with eight double arguments "interrupted" by a two-double structure after the seventh double argument: f(double,double,double,double,double,double,double,struct { double x,y; },double); In this case, the last argument should be passed in %xmm7. This patch fixes the problem in gfunc_prolog, but not the corresponding problem in gfunc_call, which I'll try tackling next. | ||||
| * | Fix stack overwrite on structure return | Michael Matz | 2015-03-09 | 1 | -1/+1 |
| | | | | | | | | | | The common code to move a returned structure packed into registers into memory on the caller side didn't take the register size into account when allocating local storage, so sometimes that lead to stack overwrites (e.g. in 73_arm64.c), on x86_64. This fixes it by generally making gfunc_sret also return the register size. | ||||
| * | arm64: Implement __clear_cache. | Edmund Grimley Evans | 2015-03-08 | 1 | -0/+48 |
| | | | | | | | __clear_cache is defined in lib-arm64.c with a single call to __arm64_clear_cache, which is the real built-in function and is turned into inline assembler by gen_clear_cache in arm64-gen.c | ||||
| * | arm64: Optimise some integer operations with a constant operand. | Edmund Grimley Evans | 2015-03-07 | 1 | -2/+124 |
| | | |||||
| * | arm64-gen.c: In load(), do not sign-extend 32-bit VT_CONST. | Edmund Grimley Evans | 2015-03-07 | 1 | -2/+2 |
| | | |||||
| * | arm64-gen.c: Improve generation of stack offsets. | Edmund Grimley Evans | 2015-03-02 | 1 | -2/+10 |
| | | |||||
| * | arm64-gen.c: Rename some functions and add comments. | Edmund Grimley Evans | 2015-03-02 | 1 | -76/+79 |
| | | |||||
| * | arm64: Improve constant generation, with tests. | Edmund Grimley Evans | 2015-03-02 | 1 | -8/+22 |
| | | |||||
| * | arm64-gen.c: Better explanation of relocation choice. | Edmund Grimley Evans | 2015-03-01 | 1 | -21/+24 |
| | | |||||
| * | arm64-gen.c: In gen_va_arg, handle the remaining HFA cases. | Edmund Grimley Evans | 2015-02-25 | 1 | -9/+27 |
| | | |||||
| * | Add arm64 (AArch64) as a target architecture. | Edmund Grimley Evans | 2015-02-23 | 1 | -0/+1621 |
