; RUN: opt < %s -inline -S | FileCheck %s ; RUN: opt < %s -passes='cgscc(inline)' -S | FileCheck %s ; PR1335 target triple = "i686-pc-linux-gnu" declare i32 @__gxx_personality_v0(...) declare void @a() declare void @b() declare void @c() define void @f() { ; CHECK-LABEL: define void @f() entry: call void asm "rdtsc\0A\09movl %eax, $0\0A\09movl %edx, $1", "=*imr,=*imr,~{dirflag},~{fpsr},~{flags},~{dx},~{ax}"( i32* elementtype( i32) null, i32* elementtype(i32) null ) nounwind ; CHECK: call void asm unreachable } define void @g() personality i32 (...)* @__gxx_personality_v0 { ; CHECK-LABEL: define void @g() personality i32 (...)* @__gxx_personality_v0 entry: invoke void @a() to label %invcont1 unwind label %cleanup ; CHECK-NOT: {{call|invoke}} ; CHECK: invoke void @a() invcont1: invoke void @b() to label %invcont2 unwind label %cleanup ; CHECK-NOT: {{call|invoke}} ; CHECK: invoke void @b() invcont2: invoke void @c() to label %invcont3 unwind label %cleanup ; CHECK-NOT: {{call|invoke}} ; CHECK: invoke void @c() invcont3: invoke void @f() to label %invcont4 unwind label %cleanup ; CHECK-NOT: {{call|invoke}} ; CHECK: call void asm ; CHECK-NOT: {{call|invoke}} invcont4: ret void cleanup: %ex = landingpad {i8*, i32} cleanup resume { i8*, i32 } %ex } define void @h() { ; CHECK-LABEL: define void @h() personality i32 (...)* @__gxx_personality_v0 entry: call void @g() ; CHECK-NOT: {{call|invoke}} ; CHECK: invoke void @a() ; CHECK-NOT: {{call|invoke}} ; CHECK: invoke void @b() ; CHECK-NOT: {{call|invoke}} ; CHECK: invoke void @c() ; CHECK-NOT: {{call|invoke}} ; CHECK: call void asm ; CHECK-NOT: {{call|invoke}} ret void }