diff options
author | Quentin Carbonneaux <quentin@c9x.me> | 2022-10-12 20:59:20 +0200 |
---|---|---|
committer | Quentin Carbonneaux <quentin@c9x.me> | 2022-10-12 21:12:08 +0200 |
commit | 8ecae922997c55f70cd9e19cbf947a520f7ecca3 (patch) | |
tree | f75685ee79cc015883b2a60d7a5cbf6c52c751d5 /arm64 | |
parent | 577e93fe6d729b63447faad471fd0f5f2296f667 (diff) | |
download | roux-8ecae922997c55f70cd9e19cbf947a520f7ecca3.tar.gz |
thread-local storage for amd64_apple
It is quite similar to arm64_apple. Probably, the call that needs to be generated also provides extra invariants on top of the regular abi, but I have not checked that. Clang generates code that is a bit neater than qbe's because, on x86, a load can be fused in a call instruction! We do not bother with supporting these since we expect only sporadic use of the feature. For reference, here is what clang might output for a store to the second entry of a thread-local array of ints: movq _x@TLVP(%rip), %rdi callq *(%rdi) movl %ecx, 4(%rax)
Diffstat (limited to 'arm64')
-rw-r--r-- | arm64/isel.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/arm64/isel.c b/arm64/isel.c index a8d36fa..31ef242 100644 --- a/arm64/isel.c +++ b/arm64/isel.c @@ -70,9 +70,9 @@ static void fixarg(Ref *pr, int k, int phi, Fn *fn) { char buf[32]; + Con *c, cc; Ref r0, r1, r2, r3; int s, n; - Con *c, cc; r0 = *pr; switch (rtype(r0)) { |