Skip to content

Commit ceac71f

Browse files
committed
unix: Add asm statements needed to read registers with clang. Code generated by gcc 4.9.0 is unchanged (same statements, different order).
Both are inefficient, saving unmodified registers on the stack.
1 parent 1b901c3 commit ceac71f

1 file changed

Lines changed: 6 additions & 0 deletions

File tree

unix/gccollect.c

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,11 +43,17 @@ typedef machine_uint_t regs_t[6];
4343

4444
void gc_helper_get_regs(regs_t arr) {
4545
register long rbx asm ("rbx");
46+
asm("" : "=r"(rbx));
4647
register long rbp asm ("rbp");
48+
asm("" : "=r"(rbp));
4749
register long r12 asm ("r12");
50+
asm("" : "=r"(r12));
4851
register long r13 asm ("r13");
52+
asm("" : "=r"(r13));
4953
register long r14 asm ("r14");
54+
asm("" : "=r"(r14));
5055
register long r15 asm ("r15");
56+
asm("" : "=r"(r15));
5157
arr[0] = rbx;
5258
arr[1] = rbp;
5359
arr[2] = r12;

0 commit comments

Comments
 (0)