diff --git a/lib/alloca86-bt.S b/lib/alloca86-bt.S index ffad515..ff07bbb 100644 --- a/lib/alloca86-bt.S +++ b/lib/alloca86-bt.S @@ -14,10 +14,10 @@ __bound_alloca: #ifdef TCC_TARGET_PE p4: cmp $4096,%eax - jle p5 + jb p5 + test %eax,-4096(%esp) sub $4096,%esp sub $4096,%eax - test %eax,(%esp) jmp p4 p5: diff --git a/lib/alloca86.S b/lib/alloca86.S index b836efb..5bb38b1 100644 --- a/lib/alloca86.S +++ b/lib/alloca86.S @@ -13,10 +13,10 @@ alloca: #ifdef TCC_TARGET_PE p1: cmp $4096,%eax - jle p2 + jb p2 + test %eax,-4096(%esp) sub $4096,%esp sub $4096,%eax - test %eax,(%esp) jmp p1 p2: #endif diff --git a/lib/alloca86_64.S b/lib/alloca86_64.S index dd46ce6..51acd42 100644 --- a/lib/alloca86_64.S +++ b/lib/alloca86_64.S @@ -17,10 +17,10 @@ alloca: #ifdef TCC_TARGET_PE p1: cmp $4096,%rax - jle p2 + jb p2 + test %rax,-4096(%rsp) sub $4096,%rsp sub $4096,%rax - test %rax,(%rsp) jmp p1 p2: #endif