brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.9 KiB · 6ba7005 Raw
62 lines · plain
1; RUN: sed -e s/.Cxx:// %s | opt -mtriple=i386-pc-windows-msvc -S -x86-winehstate | FileCheck %s2; RUN: sed -e s/.SEH:// %s | opt -mtriple=i386-pc-windows-msvc -S -x86-winehstate | FileCheck %s3 4declare i32 @__CxxFrameHandler3(...)5declare i32 @_except_handler3(...)6declare void @dummy_filter()7 8declare void @f(i32)9 10; CHECK-LABEL: define void @test2(11;Cxx: define void @test2(i1 %b) personality ptr @__CxxFrameHandler3 {12;SEH: define void @test2(i1 %b) personality ptr @_except_handler3 {13entry:14  ; CHECK: entry:15  ; CHECK:   store i32 116  ; CHECK:   invoke void @f(i32 1)17  invoke void @f(i32 1)18    to label %exit unwind label %cleanup.pad19cleanup.pad:20  %cleanup = cleanuppad within none []21  br i1 %b, label %left, label %right22left:23  cleanupret from %cleanup unwind label %catch.pad24right:25  cleanupret from %cleanup unwind label %catch.pad26catch.pad:27  %cs1 = catchswitch within none [label %catch.body] unwind to caller28catch.body:29;Cxx: %catch = catchpad within %cs1 [ptr null, i32 u0x40, ptr null]30;SEH: %catch = catchpad within %cs1 [ptr @dummy_filter]31  catchret from %catch to label %exit32exit:33  ret void34}35 36; CHECK-LABEL: define void @test3(37;Cxx: define void @test3() personality ptr @__CxxFrameHandler3 {38;SEH: define void @test3() personality ptr @_except_handler3 {39entry:40  ; CHECK: entry:41  ; CHECK:   store i32 042  ; CHECK:   invoke void @f(i32 1)43  invoke void @f(i32 1)44    to label %exit unwind label %cleanup.pad45cleanup.pad:46  ; CHECK: cleanup.pad:47  ; CHECK:   invoke void @f(i32 0)48  %cleanup = cleanuppad within none []49  invoke void @f(i32 0)50    to label %unreachable unwind label %catch.pad51unreachable:52  unreachable53catch.pad:54  %cs1 = catchswitch within none [label %catch.body] unwind to caller55catch.body:56;Cxx: %catch = catchpad within %cs1 [ptr null, i32 u0x40, ptr null]57;SEH: %catch = catchpad within %cs1 [ptr @dummy_filter]58  catchret from %catch to label %exit59exit:60  ret void61}62