1; RUN: llc -mtriple=armv7-apple-ios -O0 < %s | FileCheck %s 2; RUN: llc -mtriple=armv7-apple-ios -O1 < %s | FileCheck %s 3; RUN: llc -mtriple=armv7-apple-ios -O2 < %s | FileCheck %s 4; RUN: llc -mtriple=armv7-apple-ios -O3 < %s | FileCheck %s 5 6; SjLjEHPrepare shouldn't crash when lowering empty structs. 7; 8; Checks that between in case of empty structs used as arguments 9; nothing happens, i.e. there are no instructions between 10; __Unwind_SjLj_Register and actual @bar invocation 11 12 13define i8* @foo(i8 %a, {} %c) { 14entry: 15; CHECK: bl __Unwind_SjLj_Register 16; CHECK-NEXT: {{[A-Z][a-zA-Z0-9]*}}: 17; CHECK-NEXT: bl _bar 18 invoke void @bar () 19 to label %unreachable unwind label %handler 20 21unreachable: 22 unreachable 23 24handler: 25 %tmp = landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @baz to i8*) 26 cleanup 27 resume { i8*, i32 } undef 28} 29 30declare void @bar() 31declare i32 @baz(...) 32