diff options
Diffstat (limited to 'llvm/test/CodeGen/X86/seh-safe-div.ll')
| -rw-r--r-- | llvm/test/CodeGen/X86/seh-safe-div.ll | 45 |
1 files changed, 14 insertions, 31 deletions
diff --git a/llvm/test/CodeGen/X86/seh-safe-div.ll b/llvm/test/CodeGen/X86/seh-safe-div.ll index ba54f1cca60..80b15b60102 100644 --- a/llvm/test/CodeGen/X86/seh-safe-div.ll +++ b/llvm/test/CodeGen/X86/seh-safe-div.ll @@ -71,46 +71,34 @@ __try.cont: ; CHECK: leaq [[rloc:.*\(%rsp\)]], %rcx ; CHECK: callq try_body ; CHECK-NEXT: .Ltmp1 -; CHECK: .LBB0_7: +; CHECK: [[cont_bb:\.LBB0_[0-9]+]]: ; CHECK: movl [[rloc]], %eax ; CHECK: retq ; Landing pad code -; CHECK: .Ltmp3: -; CHECK: movl $1, %[[sel:[a-z]+]] -; CHECK: .Ltmp4 -; CHECK: movl $2, %[[sel]] -; CHECK: .L{{.*}}: -; CHECK: cmpl $1, %[[sel]] - +; CHECK: [[handler0:\.Ltmp[0-9]+]]: # Block address taken ; CHECK: # %handler0 ; CHECK: callq puts ; CHECK: movl $-1, [[rloc]] -; CHECK: jmp .LBB0_7 - -; CHECK: cmpl $2, %[[sel]] +; CHECK: jmp [[cont_bb]] +; CHECK: [[handler1:\.Ltmp[0-9]+]]: # Block address taken ; CHECK: # %handler1 ; CHECK: callq puts ; CHECK: movl $-2, [[rloc]] -; CHECK: jmp .LBB0_7 - -; FIXME: EH preparation should eliminate the 'resume' instr and we should not do -; the previous 'cmp;jeq'. -; CHECK-NOT: _Unwind_Resume -; CHECK: ud2 +; CHECK: jmp [[cont_bb]] ; CHECK: .seh_handlerdata -; CHECK: .long 2 -; CHECK: .long .Ltmp0@IMGREL -; CHECK: .long .Ltmp1@IMGREL+1 -; CHECK: .long safe_div_filt0@IMGREL -; CHECK: .long .Ltmp3@IMGREL -; CHECK: .long .Ltmp0@IMGREL -; CHECK: .long .Ltmp1@IMGREL+1 -; CHECK: .long safe_div_filt1@IMGREL -; CHECK: .long .Ltmp4@IMGREL +; CHECK-NEXT: .long 2 +; CHECK-NEXT: .long .Ltmp0@IMGREL +; CHECK-NEXT: .long .Ltmp1@IMGREL+1 +; CHECK-NEXT: .long safe_div_filt0@IMGREL +; CHECK-NEXT: .long [[handler0]]@IMGREL +; CHECK-NEXT: .long .Ltmp0@IMGREL +; CHECK-NEXT: .long .Ltmp1@IMGREL+1 +; CHECK-NEXT: .long safe_div_filt1@IMGREL +; CHECK-NEXT: .long [[handler1]]@IMGREL ; CHECK: .text ; CHECK: .seh_endproc @@ -185,11 +173,6 @@ define i32 @main() { ret i32 0 } -define void @_Unwind_Resume() { - call void @abort() - unreachable -} - declare i32 @__C_specific_handler(...) declare i32 @llvm.eh.typeid.for(i8*) readnone nounwind declare void @puts(i8*) |

