OLD | NEW |
1 ; Test forward reference of a pointer-typed intrinsic result. | 1 ; Test forward reference of a pointer-typed intrinsic result. |
2 | 2 |
3 ; RUN: llvm-as < %s | pnacl-freeze -allow-local-symbol-tables \ | 3 ; RUN: llvm-as < %s | pnacl-freeze -allow-local-symbol-tables \ |
4 ; RUN: | pnacl-thaw -allow-local-symbol-tables \ | 4 ; RUN: | pnacl-thaw -allow-local-symbol-tables \ |
5 ; RUN: | llvm-dis - | FileCheck %s -check-prefix=TD2 | 5 ; RUN: | llvm-dis - | FileCheck %s -check-prefix=TD2 |
6 | 6 |
7 declare i8* @llvm.nacl.read.tp() | 7 declare i8* @llvm.nacl.read.tp() |
8 | 8 |
9 define i32 @forward_ref() { | 9 define i32 @forward_ref() { |
10 br label %block1 | 10 br label %block1 |
11 | 11 |
12 block2: | 12 block2: |
13 %1 = load i8* %3 | 13 %1 = load i8, i8* %3 |
14 %2 = ptrtoint i8* %3 to i32 | 14 %2 = ptrtoint i8* %3 to i32 |
15 ret i32 %2 | 15 ret i32 %2 |
16 | 16 |
17 block1: | 17 block1: |
18 %3 = call i8* @llvm.nacl.read.tp() | 18 %3 = call i8* @llvm.nacl.read.tp() |
19 br label %block2 | 19 br label %block2 |
20 } | 20 } |
21 | 21 |
22 ; TD2: define i32 @forward_ref() { | 22 ; TD2: define i32 @forward_ref() { |
23 ; TD2-NEXT: br label %block1 | 23 ; TD2-NEXT: br label %block1 |
24 ; TD2: block2: | 24 ; TD2: block2: |
25 ; TD2-NEXT: %1 = inttoptr i32 %4 to i8* | 25 ; TD2-NEXT: %1 = inttoptr i32 %4 to i8* |
26 ; TD2-NEXT: %2 = load i8* %1 | 26 ; TD2-NEXT: %2 = load i8, i8* %1 |
27 ; TD2-NEXT: ret i32 %4 | 27 ; TD2-NEXT: ret i32 %4 |
28 ; TD2: block1: | 28 ; TD2: block1: |
29 ; TD2-NEXT: %3 = call i8* @llvm.nacl.read.tp() | 29 ; TD2-NEXT: %3 = call i8* @llvm.nacl.read.tp() |
30 ; TD2-NEXT: %4 = ptrtoint i8* %3 to i32 | 30 ; TD2-NEXT: %4 = ptrtoint i8* %3 to i32 |
31 ; TD2-NEXT: br label %block2 | 31 ; TD2-NEXT: br label %block2 |
32 ; TD2-NEXT: } | 32 ; TD2-NEXT: } |
OLD | NEW |