Fix a README item: when doing a comparison with the result
[oota-llvm.git] / test / Transforms / PartialSpecialize / two-specializations.ll
1 ; If there are two specializations of a function, make sure each callsite
2 ; calls the right one.
3 ;
4 ; RUN: opt -S -partialspecialization -disable-inlining %s | opt -S -inline | FileCheck %s -check-prefix=CORRECT
5 ; RUN: opt -S -partialspecialization -disable-inlining %s | FileCheck %s 
6 declare void @callback1()
7 declare void @callback2()
8
9 define internal void @UseCallback(void()* %pCallback) {
10   call void %pCallback()
11   ret void
12 }
13
14 define void @foo(void()* %pNonConstCallback)
15 {
16 Entry:
17 ; CORRECT: Entry
18 ; CORRECT-NEXT: call void @callback1()
19 ; CORRECT-NEXT: call void @callback1()
20 ; CORRECT-NEXT: call void @callback2()
21 ; CORRECT-NEXT: call void %pNonConstCallback()
22 ; CORRECT-NEXT: call void @callback1()
23 ; CORRECT-NEXT: call void @callback2()
24 ; CORRECT-NEXT: call void @callback2()
25 ; CHECK: Entry
26 ; CHECK-NOT: call void @UseCallback(void ()* @callback1)
27 ; CHECK-NOT: call void @UseCallback(void ()* @callback2)
28 ; CHECK: ret void
29   call void @UseCallback(void()* @callback1)
30   call void @UseCallback(void()* @callback1)
31   call void @UseCallback(void()* @callback2)
32   call void @UseCallback(void()* %pNonConstCallback)
33   call void @UseCallback(void()* @callback1)
34   call void @UseCallback(void()* @callback2)
35   call void @UseCallback(void()* @callback2)
36   ret void
37 }