[PATCH] D51524: [ARM64] [Windows] Handle funclets

Sanjin Sijaric via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Thu Nov 1 13:56:15 PDT 2018


ssijaric updated this revision to Diff 172224.
ssijaric added a comment.

Remove an unused variable.  Fix a nasty bug that Eli just pointed out, where I didn't insert a PrologEnd in funclets in this patch.  Previously, I relied on an RAII  object to this for me when we would go out of scope.  I removed that logic, but forgot to insert a prolog end marker for the funclet case.

With this patch, the following should now pass:

  #include <stdio.h>
  int
  main() {
    int B[100];
    int x = 4;
    B[2] = 2;
    B[4] = 0;
    try {
      throw B[2];
    } catch (int i) {
      printf("Caught %d\n", i);
      B[4] = B[i] + i;
      try {
        throw 'c';
      } catch (char c) {
        printf("Caught char %c\n", c);
      }
    }
    return x + B[4];
  }

with the correct print outs and a return value of 8.


Repository:
  rL LLVM

https://reviews.llvm.org/D51524

Files:
  lib/Target/AArch64/AArch64FrameLowering.cpp
  lib/Target/AArch64/AArch64FrameLowering.h
  lib/Target/AArch64/AArch64ISelLowering.cpp
  lib/Target/AArch64/AArch64ISelLowering.h
  lib/Target/AArch64/AArch64InstrInfo.cpp
  lib/Target/AArch64/AArch64InstrInfo.td
  lib/Target/AArch64/AArch64MCInstLower.cpp
  lib/Target/AArch64/AArch64RegisterInfo.cpp
  lib/Target/AArch64/AArch64RegisterInfo.h
  test/CodeGen/AArch64/wineh-try-catch.ll

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D51524.172224.patch
Type: text/x-patch
Size: 27716 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20181101/3c6afbe2/attachment.bin>


More information about the llvm-commits mailing list