arch: bring back clobbers for input operands.

This reverts a part of 365e40b. While it is not legal to clobber
the output register, it is legal and necessary to do this for inputs,
since we do not preserve them, and LLVM could have decided to
reuse them.

Thanks to @Amanieu for discovering this.
master
whitequark 2016-08-31 16:47:07 +00:00 committed by edef
parent 248d7b16b5
commit a733290359
3 changed files with 3 additions and 3 deletions

View File

@ -156,7 +156,7 @@ pub unsafe fn swap(arg: usize, old_sp: &mut StackPointer, new_sp: &StackPointer,
"{r4}" (old_sp)
"{r5}" (new_sp)
"{r6}" (new_cfa)
:/*"r0", "r1", "r2", "r3", "r4", "r5", "r6",*/"r7",
:/*"r0", "r1", "r2", "r3",*/"r4", "r5", "r6", "r7",
"r8", "r9", "r10", "r11", "r12", "r13", "r14", "r15",
"r16", "r17", "r18", "r19", "r20", "r21", "r22", "r23",
"r24", "r25", "r26", "r27", "r28", "r29", "r30", "r31",

View File

@ -151,7 +151,7 @@ pub unsafe fn swap(arg: usize, old_sp: &mut StackPointer, new_sp: &StackPointer,
"{esi}" (old_sp)
"{edx}" (new_sp)
"{edi}" (new_cfa)
:/*"eax",*/"ebx", "ecx",/*"edx", "esi", "edi", "ebp", "esp",*/
:/*"eax",*/"ebx", "ecx", "edx", "esi", "edi",/*"ebp", "esp",*/
"mmx0", "mmx1", "mmx2", "mmx3", "mmx4", "mmx5", "mmx6", "mmx7",
"xmm0", "xmm1", "xmm2", "xmm3", "xmm4", "xmm5", "xmm6", "xmm7",
"cc", "fpsr", "flags", "memory"

View File

@ -153,7 +153,7 @@ pub unsafe fn swap(arg: usize, old_sp: &mut StackPointer, new_sp: &StackPointer,
"{rsi}" (old_sp)
"{rdx}" (new_sp)
"{rcx}" (new_cfa)
: "rax", "rbx", /*"rcx", "rdx", "rsi", "rdi", "rbp", "rsp",*/
: "rax", "rbx", "rcx", "rdx", "rsi", /*"rdi", "rbp", "rsp",*/
"r8", "r9", "r10", "r11", "r12", "r13", "r14", "r15",
"xmm0", "xmm1", "xmm2", "xmm3", "xmm4", "xmm5", "xmm6", "xmm7",
"xmm8", "xmm9", "xmm10", "xmm11", "xmm12", "xmm13", "xmm14", "xmm15",