[all-commits] [llvm/llvm-project] 77f243: [X86] Don't clobber EBX in stackprobes

Elliot Saba via All-commits all-commits at lists.llvm.org
Fri Sep 10 09:31:23 PDT 2021


  Branch: refs/heads/release/13.x
  Home:   https://github.com/llvm/llvm-project
  Commit: 77f24308fe7890ee5094dd3c84441ae8a45adb20
      https://github.com/llvm/llvm-project/commit/77f24308fe7890ee5094dd3c84441ae8a45adb20
  Author: Elliot Saba <staticfloat at gmail.com>
  Date:   2021-09-10 (Fri, 10 Sep 2021)

  Changed paths:
    M llvm/lib/Target/X86/X86FrameLowering.cpp
    M llvm/test/CodeGen/X86/stack-clash-large.ll

  Log Message:
  -----------
  [X86] Don't clobber EBX in stackprobes

On X86, the stackprobe emission code chooses the `R11D` register, which
is illegal on i686.  This ends up wrapping around to `EBX`, which does
not get properly callee-saved within the stack probing prologue,
clobbering the register for the callers.

We fix this by explicitly using `EAX` as the stack probe register.

Reviewed By: pengfei

Differential Revision: https://reviews.llvm.org/D109203

(cherry picked from commit ae8507b0df738205a6b9e3795ad34672b7499381)




More information about the All-commits mailing list