[rtsan] Add fork/execve interceptors (#117198)
[llvm-project.git] / llvm / test / Transforms / Inline / inline-invoke-with-asm-call.ll
blob97f0ed11d3b32a6bea5eca99a400744decbd31fe
1 ; RUN: opt < %s -passes=inline -S | FileCheck %s
2 ; RUN: opt < %s -passes='cgscc(inline)' -S | FileCheck %s
3 target triple = "x86_64-apple-darwin"
5 ; In inliner, we assume that inline asm does not throw. This testing case makes
6 ; sure that the inliner does not convert "call asm" to "invoke asm".
7 ; rdar://15317907
8 ; CHECK-LABEL: @caller
9 ; Make sure we are generating "call asm" instead of "invoke asm".
10 ; CHECK: call void asm
11 ; CHECK-LABEL: @callee_with_asm
12 define void @caller(i1 %arg) personality ptr @__objc_personality_v0 {
13   br i1 %arg, label %1, label %4
15 ; <label>:1
16   invoke void @callee_with_asm()
17           to label %4 unwind label %2
19 ; <label>:2
20   %3 = landingpad { ptr, i32 }
21           cleanup
22   resume { ptr, i32 } undef
24 ; <label>:4
25   ret void
28 define void @callee_with_asm() {
29   call void asm sideeffect "mov\09r7, r7\09\09@ marker for objc_retainAutoreleaseReturnValue", ""() nounwind
30   ret void
33 declare i32 @__objc_personality_v0(...)