[PATCH] D53541: [COFF, ARM64] Do not emit x86_seh_recoverfp intrinsic

Reid Kleckner via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Mon Jan 14 14:18:39 PST 2019


rnk added a comment.

In D53541#1353251 <https://reviews.llvm.org/D53541#1353251>, @mgrang wrote:

> > What about the three stack pointer case of stack realignment plus a dynamic alloca? Typically this is the case where recoverfp is necessary.
>
> @rnk Sorry, I missed your comment earlier. I am not sure what scenario the three stack pointer case is. Could you please give me a test case for it?


I think you just need a local variable with an alignment greater than the ABI provides, something like:

  struct Foo {
    Foo();
    int x, y, z;
  };
  int filter(int);
  void may_throw();
  void seh_byval(int n) {
    Foo __declspec(align(32)) o;
    __try {
      may_throw();
    } __except(filter(o.x)) {
    }
  }


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D53541/new/

https://reviews.llvm.org/D53541





More information about the cfe-commits mailing list