Stackmap shadows should consider call returns a branch target.
[oota-llvm.git] / test / CodeGen / X86 / fast-isel-cmp-branch.ll
1 ; RUN: llc -O0 -mtriple=x86_64-linux -asm-verbose=false < %s | FileCheck %s
2 ; RUN: llc -O0 -mtriple=x86_64-win32 -asm-verbose=false < %s | FileCheck %s
3 ; rdar://8337108
4
5 ; Fast-isel shouldn't try to look through the compare because it's in a
6 ; different basic block, so its operands aren't necessarily exported
7 ; for cross-block usage.
8
9 ; CHECK: movb    %al, [[OFS:[0-9]*]](%rsp)
10 ; CHECK: callq   {{_?}}bar
11 ; CHECK: movb    [[OFS]](%rsp), %al
12
13 declare void @bar()
14
15 define void @foo(i32 %a, i32 %b) nounwind {
16 entry:
17   %q = add i32 %a, 7
18   %r = add i32 %b, 9
19   %t = icmp ult i32 %q, %r
20   invoke void @bar() to label %next unwind label %unw
21 next:
22   br i1 %t, label %true, label %return
23 true:
24   call void @bar()
25   br label %return
26 return:
27   ret void
28 unw:
29   %exn = landingpad {i8*, i32} personality i32 (...)* @__gxx_personality_v0
30             cleanup
31   unreachable
32 }
33
34 declare i32 @__gxx_personality_v0(...)