OLD | NEW |
1 ; Test that even if a call return type matches its declaration, it must still be | 1 ; Test that even if a call return type matches its declaration, it must still be |
2 ; a legal call return type (unless declaration is intrinsic). | 2 ; a legal call return type (unless declaration is intrinsic). |
3 | 3 |
4 ; REQUIRES: no_minimal_build | 4 ; REQUIRES: no_minimal_build |
5 | 5 |
6 ; RUN: %p2i --expect-fail -i %s --insts --args \ | 6 ; RUN: %p2i --expect-fail -i %s --insts --args \ |
7 ; RUN: -allow-externally-defined-symbols | FileCheck %s | 7 ; RUN: -allow-externally-defined-symbols | FileCheck %s |
8 | 8 |
9 declare i32 @f(); | 9 declare i32 @f(); |
10 | 10 |
11 declare i64 @g(); | 11 declare i64 @g(); |
12 | 12 |
13 define void @Test(i32 %ifcn) { | 13 define void @Test(i32 %ifcn) { |
14 entry: | 14 entry: |
15 %fcn = inttoptr i32 %ifcn to i1()* | 15 %fcn = inttoptr i32 %ifcn to i1()* |
16 %v = call i1 %fcn() | 16 %v = call i1 %fcn() |
17 ; CHECK: Return type of function is invalid: i1 | 17 ; CHECK: Return type of function is invalid: i1 |
18 ret void | 18 ret void |
19 } | 19 } |
20 | |
OLD | NEW |