Skip to content
  • Reid Kleckner's avatar
    399a2fe4
    [SEH] Add new intrinsics for recovering and restoring parent frames · 399a2fe4
    Reid Kleckner authored
    The incoming EBP value established by the runtime is actually a pointer
    to the end of the EH registration object, and not the true parent
    function frame pointer. Clang doesn't need llvm.x86.seh.exceptioninfo
    anymore because we know that the exception info pointer is at a fixed
    offset from this incoming EBP.
    
    The llvm.x86.seh.recoverfp intrinsic takes an EBP value provided by the
    EH runtime and returns a pointer that is usable with llvm.framerecover.
    
    The llvm.x86.seh.restoreframe intrinsic is inserted by the 32-bit
    specific preparation pass in blocks targetted by the EH runtime. It
    re-establishes any physical registers used by the parent function to
    address the stack, such as the frame, base, and stack pointers.
    
    Neither of these intrinsics correctly handle stack realignment prologues
    yet, but it's possible to add that later.
    
    Reviewers: majnemer
    
    Differential Revision: http://reviews.llvm.org/D10848
    
    llvm-svn: 241125
    399a2fe4
    [SEH] Add new intrinsics for recovering and restoring parent frames
    Reid Kleckner authored
    The incoming EBP value established by the runtime is actually a pointer
    to the end of the EH registration object, and not the true parent
    function frame pointer. Clang doesn't need llvm.x86.seh.exceptioninfo
    anymore because we know that the exception info pointer is at a fixed
    offset from this incoming EBP.
    
    The llvm.x86.seh.recoverfp intrinsic takes an EBP value provided by the
    EH runtime and returns a pointer that is usable with llvm.framerecover.
    
    The llvm.x86.seh.restoreframe intrinsic is inserted by the 32-bit
    specific preparation pass in blocks targetted by the EH runtime. It
    re-establishes any physical registers used by the parent function to
    address the stack, such as the frame, base, and stack pointers.
    
    Neither of these intrinsics correctly handle stack realignment prologues
    yet, but it's possible to add that later.
    
    Reviewers: majnemer
    
    Differential Revision: http://reviews.llvm.org/D10848
    
    llvm-svn: 241125
Loading