brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.7 KiB · 0203c33 Raw
101 lines · plain
1; RUN: llc -verify-machineinstrs -mtriple=aarch64-pc-windows-msvc < %s \2; RUN:     | FileCheck --check-prefix=CHECK %s3 4; Loosely based on IR for this C++ source code:5;   void f(int p);6;   void try_in_catch() {7;     try {8;       f(1);9;     } catch (...) {10;       try {11;         f(2);12;       } catch (...) {13;         f(3);14;       }15;     }16;   }17 18declare void @f(i32 %p)19declare i32 @__CxxFrameHandler3(...)20 21define i32 @try_in_catch() personality ptr @__CxxFrameHandler3 {22entry:23  invoke void @f(i32 1)24          to label %try.cont unwind label %catch.dispatch.125try.cont:26  ret i32 027 28catch.dispatch.1:29  %cs1 = catchswitch within none [label %handler1] unwind to caller30handler1:31  %h1 = catchpad within %cs1 [ptr null, i32 64, ptr null]32  invoke void @f(i32 2) [ "funclet"(token %h1) ]33          to label %catchret1 unwind label %catch.dispatch.234catchret1:35  catchret from %h1 to label %try.cont36 37catch.dispatch.2:38  %cs2 = catchswitch within %h1 [label %handler2] unwind to caller39handler2:40  %h2 = catchpad within %cs2 [ptr null, i32 64, ptr null]41  call void @f(i32 3)42  catchret from %h2 to label %catchret143}44 45; CHECK-LABEL: $cppxdata$try_in_catch:46; CHECK-NEXT: .word   42906550647; CHECK-NEXT: .word   448; CHECK-NEXT: .word   $stateUnwindMap$try_in_catch49; CHECK-NEXT: .word   250; CHECK-NEXT: .word   $tryMap$try_in_catch51; ip2state num + ptr52; CHECK-NEXT: .word   753; CHECK-NEXT: .word   $ip2state$try_in_catch54; unwindhelp offset55; CHECK-NEXT: .word   -1656; CHECK-NEXT: .word   057; EHFlags58; CHECK-NEXT: .word   159 60; CHECK-LABEL: $tryMap$try_in_catch:61; CHECK-NEXT: .word   062; CHECK-NEXT: .word   063; CHECK-NEXT: .word   364; CHECK-NEXT: .word   165; CHECK-NEXT: .word   $handlerMap$0$try_in_catch66; CHECK-NEXT: .word   267; CHECK-NEXT: .word   268; CHECK-NEXT: .word   369; CHECK-NEXT: .word   170; CHECK-NEXT: .word   $handlerMap$1$try_in_catch71 72; CHECK: $handlerMap$0$try_in_catch:73; CHECK-NEXT:   .word   6474; CHECK-NEXT:   .word   075; CHECK-NEXT:   .word   076; CHECK-NEXT:   .word   "?catch${{[0-9]+}}@?0?try_in_catch@4HA"77; CHECK-NEXT:   .word   078 79; CHECK: $handlerMap$1$try_in_catch:80; CHECK-NEXT:   .word   6481; CHECK-NEXT:   .word   082; CHECK-NEXT:   .word   083; CHECK-NEXT:   .word   "?catch${{[0-9]+}}@?0?try_in_catch@4HA"84; CHECK-NEXT:   .word   085 86; CHECK: $ip2state$try_in_catch:87; CHECK-NEXT: .word   .Lfunc_begin0@IMGREL88; CHECK-NEXT: .word   -189; CHECK-NEXT: .word   .Ltmp0@IMGREL90; CHECK-NEXT: .word   091; CHECK-NEXT: .word   .Ltmp1@IMGREL92; CHECK-NEXT: .word   -193; CHECK-NEXT: .word   "?catch$2@?0?try_in_catch@4HA"@IMGREL94; CHECK-NEXT: .word   195; CHECK-NEXT: .word   .Ltmp2@IMGREL96; CHECK-NEXT: .word   297; CHECK-NEXT: .word   .Ltmp3@IMGREL98; CHECK-NEXT: .word   199; CHECK-NEXT: .word   "?catch$4@?0?try_in_catch@4HA"@IMGREL100; CHECK-NEXT: .word   3101