diff options
Diffstat (limited to 'llvm/test/CodeGen/WinEH')
-rw-r--r-- | llvm/test/CodeGen/WinEH/wineh-noret-cleanup.ll | 14 | ||||
-rw-r--r-- | llvm/test/CodeGen/WinEH/wineh-reuse-catch-alloca.ll | 34 |
2 files changed, 27 insertions, 21 deletions
diff --git a/llvm/test/CodeGen/WinEH/wineh-noret-cleanup.ll b/llvm/test/CodeGen/WinEH/wineh-noret-cleanup.ll index 3b3a460..ab6672e 100644 --- a/llvm/test/CodeGen/WinEH/wineh-noret-cleanup.ll +++ b/llvm/test/CodeGen/WinEH/wineh-noret-cleanup.ll @@ -1,4 +1,4 @@ -; RUN: sed -e s/.Cxx:// %s | llc -mtriple=x86_64-pc-windows-msvc | FileCheck %s --check-prefixes=CXX,X64CXX +; RUN: sed -e s/.Cxx:// %s | llc -mtriple=x86_64-pc-windows-msvc | FileCheck %s --check-prefixes=CXX ; RUN: sed -e s/.Seh:// %s | llc -mtriple=x86_64-pc-windows-msvc | FileCheck %s --check-prefixes=SEH ; RUN: %if aarch64-registered-target %{ sed -e s/.Cxx:// %s | llc -mtriple=aarch64-pc-windows-msvc | FileCheck %s --check-prefix=CXX %} ; RUN: %if aarch64-registered-target %{ sed -e s/.Seh:// %s | llc -mtriple=aarch64-pc-windows-msvc | FileCheck %s --check-prefix=SEH %} @@ -49,18 +49,14 @@ catch.body.2: ; CXX-NEXT: .[[ENTRY:long|word]] .Lfunc_begin0@IMGREL ; CXX-NEXT: .[[ENTRY]] -1 ; CXX-NEXT: .[[ENTRY]] .Ltmp0@IMGREL -; X64CXX-SAME: +1 ; CXX-NEXT: .[[ENTRY]] 1 ; CXX-NEXT: .[[ENTRY]] .Ltmp1@IMGREL -; X64CXX-SAME: +1 ; CXX-NEXT: .[[ENTRY]] -1 ; CXX-NEXT: .[[ENTRY]] "?catch$3@?0?test@4HA"@IMGREL ; CXX-NEXT: .[[ENTRY]] 2 ; CXX-NEXT: .[[ENTRY]] .Ltmp2@IMGREL -; X64CXX-SAME: +1 ; CXX-NEXT: .[[ENTRY]] 3 ; CXX-NEXT: .[[ENTRY]] .Ltmp3@IMGREL -; X64CXX-SAME: +1 ; CXX-NEXT: .[[ENTRY]] 2 ; CXX-NEXT: .[[ENTRY]] "?catch$5@?0?test@4HA"@IMGREL ; CXX-NEXT: .[[ENTRY]] 4 @@ -70,19 +66,19 @@ catch.body.2: ; SEH: .LBB0_[[CATCH:[0-9]+]]: {{.*}} %catch.body ; SEH-LABEL: .Llsda_begin0: ; SEH-NEXT: .[[ENTRY:long|word]] .Ltmp0@IMGREL -; SEH-NEXT: .[[ENTRY]] .Ltmp1@IMGREL+1 +; SEH-NEXT: .[[ENTRY]] .Ltmp1@IMGREL ; SEH-NEXT: .[[ENTRY]] dummy_filter@IMGREL ; SEH-NEXT: .[[ENTRY]] .LBB0_[[CATCH]]@IMGREL ; SEH-NEXT: .[[ENTRY]] .Ltmp0@IMGREL -; SEH-NEXT: .[[ENTRY]] .Ltmp1@IMGREL+1 +; SEH-NEXT: .[[ENTRY]] .Ltmp1@IMGREL ; SEH-NEXT: .[[ENTRY]] dummy_filter@IMGREL ; SEH-NEXT: .[[ENTRY]] .LBB0_[[CATCH2]]@IMGREL ; SEH-NEXT: .[[ENTRY]] .Ltmp2@IMGREL -; SEH-NEXT: .[[ENTRY]] .Ltmp3@IMGREL+1 +; SEH-NEXT: .[[ENTRY]] .Ltmp3@IMGREL ; SEH-NEXT: .[[ENTRY]] "?dtor$[[DTOR:[0-9]+]]@?0?test@4HA"@IMGREL ; SEH-NEXT: .[[ENTRY]] 0 ; SEH-NEXT: .[[ENTRY]] .Ltmp2@IMGREL -; SEH-NEXT: .[[ENTRY]] .Ltmp3@IMGREL+1 +; SEH-NEXT: .[[ENTRY]] .Ltmp3@IMGREL ; SEH-NEXT: .[[ENTRY]] dummy_filter@IMGREL ; SEH-NEXT: .[[ENTRY]] .LBB0_[[CATCH2]]@IMGREL ; SEH-NEXT: .Llsda_end0: diff --git a/llvm/test/CodeGen/WinEH/wineh-reuse-catch-alloca.ll b/llvm/test/CodeGen/WinEH/wineh-reuse-catch-alloca.ll index 2bd004e..9de79ee 100644 --- a/llvm/test/CodeGen/WinEH/wineh-reuse-catch-alloca.ll +++ b/llvm/test/CodeGen/WinEH/wineh-reuse-catch-alloca.ll @@ -1,4 +1,5 @@ -; RUN: llc %s --mtriple=x86_64-pc-windows-msvc -o - | FileCheck %s +; RUN: llc %s --mtriple=x86_64-pc-windows-msvc -o - | FileCheck %s --check-prefixes=CHECK,X64 +; RUN: %if aarch64-registered-target %{ llc %s --mtriple=aarch64-pc-windows-msvc -o - | FileCheck %s --check-prefixes=CHECK,ARM64 %} ; Tests the fixed object layouts when two catchpads re-use the same stack ; allocation for this catch objects. @@ -18,27 +19,36 @@ ; } ; ``` -; Minimum stack alloc is 64 bytes, so no change there. ; CHECK-LABEL: calls_boom: -; CHECK: subq $64, %rsp -; CHECK: .seh_stackalloc 64 +; Minimum stack alloc is 64 bytes, so no change there. +; X64: subq $64, %rsp +; X64: .seh_stackalloc 64 +; Only need 48 bytes on the stack, not 64. +; ARM64: sub sp, sp, #48 +; ARM64: .seh_stackalloc 48 ; Both the catch blocks load from the same address. ; CHECK-LABEL: "?catch$3@?0?calls_boom@4HA": -; CHECK: movq -8(%rbp), %rax +; X64: movq -8(%rbp), %rax +; ARM64: ldr x8, [x29, #24] ; CHECK-LABEL: "?catch$4@?0?calls_boom@4HA": -; CHECK: movq -8(%rbp), %rax +; X64: movq -8(%rbp), %rax +; ARM64: ldr x8, [x29, #24] -; There's enough space for the UnwindHelp to be at 48 instead of 40 ; CHECK-LABEL: $cppxdata$calls_boom: -; CHECK: .long 48 # UnwindHelp +; There's enough space for the UnwindHelp to be at 48 instead of 40 +; X64: .long 48 # UnwindHelp +; There's enough space for the UnwindHelp to be at -16 instead of -32 +; ARM64: .word -16 // UnwindHelp ; Both catches have the same object offset. ; CHECK-LABEL: $handlerMap$0$calls_boom: -; CHECK: .long 56 # CatchObjOffset -; CHECK-NEXT: .long "?catch$3@?0?calls_boom@4HA"@IMGREL # Handler -; CHECK: .long 56 # CatchObjOffset -; CHECK-NEXT: .long "?catch$4@?0?calls_boom@4HA"@IMGREL # Handler +; X64: .long 56 # CatchObjOffset +; ARM64: .word -8 // CatchObjOffset +; CHECK-NEXT: "?catch$3@?0?calls_boom@4HA"@IMGREL +; X64: .long 56 # CatchObjOffset +; ARM64: .word -8 // CatchObjOffset +; CHECK-NEXT: "?catch$4@?0?calls_boom@4HA"@IMGREL %rtti.TypeDescriptor2 = type { ptr, ptr, [3 x i8] } |