70 lines · plain
1; RUN: opt < %s -passes=inline -S | FileCheck %s2; RUN: opt < %s -passes='cgscc(inline)' -S | FileCheck %s3; PR13354 5target triple = "i686-pc-linux-gnu"6 7declare i32 @__gxx_personality_v0(...)8 9declare void @a()10 11declare void @b()12 13declare void @c()14 15define void @f() {16; CHECK-LABEL: define void @f()17entry:18 call void asm "rdtsc\0A\09movl %eax, $0\0A\09movl %edx, $1", "=*imr,=*imr,~{dirflag},~{fpsr},~{flags},~{dx},~{ax}"( ptr elementtype( i32) null, ptr elementtype(i32) null ) nounwind19; CHECK: call void asm20 unreachable21}22 23define void @g() personality ptr @__gxx_personality_v0 {24; CHECK-LABEL: define void @g() personality ptr @__gxx_personality_v025entry:26 invoke void @a() to label %invcont1 unwind label %cleanup27; CHECK-NOT: {{call|invoke}}28; CHECK: invoke void @a()29 30invcont1:31 invoke void @b() to label %invcont2 unwind label %cleanup32; CHECK-NOT: {{call|invoke}}33; CHECK: invoke void @b()34 35invcont2:36 invoke void @c() to label %invcont3 unwind label %cleanup37; CHECK-NOT: {{call|invoke}}38; CHECK: invoke void @c()39 40invcont3:41 invoke void @f() to label %invcont4 unwind label %cleanup42; CHECK-NOT: {{call|invoke}}43; CHECK: call void asm44; CHECK-NOT: {{call|invoke}}45 46invcont4:47 ret void48 49cleanup:50 %ex = landingpad {ptr, i32} cleanup51 resume { ptr, i32 } %ex52}53 54define void @h() {55; CHECK-LABEL: define void @h() personality ptr @__gxx_personality_v056entry:57 call void @g()58; CHECK-NOT: {{call|invoke}}59; CHECK: invoke void @a()60; CHECK-NOT: {{call|invoke}}61; CHECK: invoke void @b()62; CHECK-NOT: {{call|invoke}}63; CHECK: invoke void @c()64; CHECK-NOT: {{call|invoke}}65; CHECK: call void asm66; CHECK-NOT: {{call|invoke}}67 68 ret void69}70