| ; RUN: not llc -mtriple=x86_64-unknown-unknown -stackrealign -verify-machineinstrs %s -o - 2>&1 | FileCheck %s |
| |
| declare ghccc void @may_throw_or_crash() |
| declare i32 @_except_handler3(...) |
| |
| define internal i64 @catchall_filt() { |
| ret i64 1 |
| } |
| |
| ; If the invoked function clobbers frame pointer and/or base pointer according |
| ; to its calling convention, we can't handle it currently, so reports an error |
| ; message. |
| |
| ; CHECK: <unknown>:0: error: Frame pointer clobbered by function invoke is not supported |
| ; CHECK: <unknown>:0: error: Stack realignment in presence of dynamic allocas is not supported with this calling convention |
| define void @use_except_handler3() personality ptr @_except_handler3 { |
| entry: |
| invoke ghccc void @may_throw_or_crash() |
| to label %cont unwind label %lpad |
| cont: |
| ret void |
| lpad: |
| %cs = catchswitch within none [label %catch] unwind to caller |
| catch: |
| %p = catchpad within %cs [ptr @catchall_filt] |
| catchret from %p to label %cont |
| } |