| ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py |
| ; RUN: llc -mtriple=m68k < %s | FileCheck %s |
| |
| ; (Copied from test/CodeGen/X86/gcc_except_table.ll) |
| ; Testing whether exception pointer register (d0) and exception selector |
| ; register (d1) are correctly used by landing and EH pad, respectively. |
| @_ZTIi = external constant ptr |
| |
| define i32 @foo() uwtable ssp personality ptr @__gxx_personality_v0 { |
| ; CHECK-LABEL: foo: |
| ; CHECK: .Lfunc_begin0: |
| ; CHECK-NEXT: .cfi_startproc |
| ; CHECK-NEXT: .cfi_personality 0, __gxx_personality_v0 |
| ; CHECK-NEXT: .cfi_lsda 0, .Lexception0 |
| ; CHECK-NEXT: ; %bb.0: ; %entry |
| ; CHECK-NEXT: suba.l #4, %sp |
| ; CHECK-NEXT: .cfi_def_cfa_offset -8 |
| ; CHECK-NEXT: .Ltmp0: |
| ; CHECK-NEXT: jsr _Z1fv |
| ; CHECK-NEXT: .Ltmp1: |
| ; CHECK-NEXT: ; %bb.1: ; %try.cont |
| ; CHECK-NEXT: moveq #0, %d0 |
| ; CHECK-NEXT: adda.l #4, %sp |
| ; CHECK-NEXT: rts |
| ; CHECK-NEXT: .LBB0_2: ; %lpad |
| ; CHECK-NEXT: .Ltmp2: |
| ; CHECK-NEXT: move.l %d0, (%sp) |
| ; CHECK-NEXT: jsr _Unwind_Resume |
| entry: |
| invoke void @_Z1fv() optsize |
| to label %try.cont unwind label %lpad |
| |
| lpad: |
| %0 = landingpad { ptr, i32 } |
| cleanup |
| catch ptr @_ZTIi |
| br label %eh.resume |
| |
| try.cont: |
| ret i32 0 |
| |
| eh.resume: |
| resume { ptr, i32 } %0 |
| } |
| |
| declare void @_Z1fv() optsize |
| |
| declare i32 @__gxx_personality_v0(...) |