OLD | NEW |
1 ; Test if we can read alloca instructions. | 1 ; Test if we can read alloca instructions. |
2 | 2 |
3 ; RUN: llvm-as < %s | pnacl-freeze \ | 3 ; RUN: llvm-as < %s | pnacl-freeze -allow-local-symbol-tables \ |
4 ; RUN: | %llvm2ice -notranslate -verbose=inst -build-on-read \ | 4 ; RUN: | %llvm2ice -notranslate -verbose=inst -build-on-read \ |
5 ; RUN: -allow-pnacl-reader-error-recovery \ | 5 ; RUN: -allow-pnacl-reader-error-recovery \ |
| 6 ; RUN: -allow-local-symbol-tables \ |
6 ; RUN: | FileCheck %s | 7 ; RUN: | FileCheck %s |
7 | 8 |
8 ; Show examples where size is defined by a constant. | 9 ; Show examples where size is defined by a constant. |
9 | 10 |
10 define i32 @AllocaA0Size1() { | 11 define i32 @AllocaA0Size1() { |
| 12 entry: |
11 %array = alloca i8, i32 1 | 13 %array = alloca i8, i32 1 |
12 %addr = ptrtoint i8* %array to i32 | 14 %addr = ptrtoint i8* %array to i32 |
13 ret i32 %addr | 15 ret i32 %addr |
14 | 16 |
15 ; CHECK: __0: | 17 ; CHECK: entry: |
16 ; CHECK-NEXT: %__0 = alloca i8, i32 1 | 18 ; CHECK-NEXT: %array = alloca i8, i32 1 |
17 ; CHECK-NEXT: ret i32 %__0 | 19 ; CHECK-NEXT: ret i32 %array |
18 } | 20 } |
19 | 21 |
20 define i32 @AllocaA0Size2() { | 22 define i32 @AllocaA0Size2() { |
| 23 entry: |
21 %array = alloca i8, i32 2 | 24 %array = alloca i8, i32 2 |
22 %addr = ptrtoint i8* %array to i32 | 25 %addr = ptrtoint i8* %array to i32 |
23 ret i32 %addr | 26 ret i32 %addr |
24 | 27 |
25 ; CHECK: __0: | 28 ; CHECK: entry: |
26 ; CHECK-NEXT: %__0 = alloca i8, i32 2 | 29 ; CHECK-NEXT: %array = alloca i8, i32 2 |
27 ; CHECK-NEXT: ret i32 %__0 | 30 ; CHECK-NEXT: ret i32 %array |
28 } | 31 } |
29 | 32 |
30 define i32 @AllocaA0Size3() { | 33 define i32 @AllocaA0Size3() { |
| 34 entry: |
31 %array = alloca i8, i32 3 | 35 %array = alloca i8, i32 3 |
32 %addr = ptrtoint i8* %array to i32 | 36 %addr = ptrtoint i8* %array to i32 |
33 ret i32 %addr | 37 ret i32 %addr |
34 | 38 |
35 ; CHECK: __0: | 39 ; CHECK: entry: |
36 ; CHECK-NEXT: %__0 = alloca i8, i32 3 | 40 ; CHECK-NEXT: %array = alloca i8, i32 3 |
37 ; CHECK-NEXT: ret i32 %__0 | 41 ; CHECK-NEXT: ret i32 %array |
38 } | 42 } |
39 | 43 |
40 define i32 @AllocaA0Size4() { | 44 define i32 @AllocaA0Size4() { |
| 45 entry: |
41 %array = alloca i8, i32 4 | 46 %array = alloca i8, i32 4 |
42 %addr = ptrtoint i8* %array to i32 | 47 %addr = ptrtoint i8* %array to i32 |
43 ret i32 %addr | 48 ret i32 %addr |
44 | 49 |
45 ; CHECK: __0: | 50 ; CHECK: entry: |
46 ; CHECK-NEXT: %__0 = alloca i8, i32 4 | 51 ; CHECK-NEXT: %array = alloca i8, i32 4 |
47 ; CHECK-NEXT: ret i32 %__0 | 52 ; CHECK-NEXT: ret i32 %array |
48 } | 53 } |
49 | 54 |
50 define i32 @AllocaA1Size4(i32 %n) { | 55 define i32 @AllocaA1Size4(i32 %n) { |
| 56 entry: |
51 %array = alloca i8, i32 4, align 1 | 57 %array = alloca i8, i32 4, align 1 |
52 %addr = ptrtoint i8* %array to i32 | 58 %addr = ptrtoint i8* %array to i32 |
53 ret i32 %addr | 59 ret i32 %addr |
54 | 60 |
55 ; CHECK: __0: | 61 ; CHECK: entry: |
56 ; CHECK-NEXT: %__1 = alloca i8, i32 4, align 1 | 62 ; CHECK-NEXT: %array = alloca i8, i32 4, align 1 |
57 ; CHECK-NEXT: ret i32 %__1 | 63 ; CHECK-NEXT: ret i32 %array |
58 } | 64 } |
59 | 65 |
60 define i32 @AllocaA2Size4(i32 %n) { | 66 define i32 @AllocaA2Size4(i32 %n) { |
| 67 entry: |
61 %array = alloca i8, i32 4, align 2 | 68 %array = alloca i8, i32 4, align 2 |
62 %addr = ptrtoint i8* %array to i32 | 69 %addr = ptrtoint i8* %array to i32 |
63 ret i32 %addr | 70 ret i32 %addr |
64 | 71 |
65 ; CHECK: __0: | 72 ; CHECK: entry: |
66 ; CHECK-NEXT: %__1 = alloca i8, i32 4, align 2 | 73 ; CHECK-NEXT: %array = alloca i8, i32 4, align 2 |
67 ; CHECK-NEXT: ret i32 %__1 | 74 ; CHECK-NEXT: ret i32 %array |
68 } | 75 } |
69 | 76 |
70 define i32 @AllocaA8Size4(i32 %n) { | 77 define i32 @AllocaA8Size4(i32 %n) { |
| 78 entry: |
71 %array = alloca i8, i32 4, align 8 | 79 %array = alloca i8, i32 4, align 8 |
72 %addr = ptrtoint i8* %array to i32 | 80 %addr = ptrtoint i8* %array to i32 |
73 ret i32 %addr | 81 ret i32 %addr |
74 | 82 |
75 ; CHECK: __0: | 83 ; CHECK: entry: |
76 ; CHECK-NEXT: %__1 = alloca i8, i32 4, align 8 | 84 ; CHECK-NEXT: %array = alloca i8, i32 4, align 8 |
77 ; CHECK-NEXT: ret i32 %__1 | 85 ; CHECK-NEXT: ret i32 %array |
78 } | 86 } |
79 | 87 |
80 define i32 @Alloca16Size4(i32 %n) { | 88 define i32 @Alloca16Size4(i32 %n) { |
| 89 entry: |
81 %array = alloca i8, i32 4, align 16 | 90 %array = alloca i8, i32 4, align 16 |
82 %addr = ptrtoint i8* %array to i32 | 91 %addr = ptrtoint i8* %array to i32 |
83 ret i32 %addr | 92 ret i32 %addr |
84 | 93 |
85 ; CHECK: __0: | 94 ; CHECK: entry: |
86 ; CHECK-NEXT: %__1 = alloca i8, i32 4, align 16 | 95 ; CHECK-NEXT: %array = alloca i8, i32 4, align 16 |
87 ; CHECK-NEXT: ret i32 %__1 | 96 ; CHECK-NEXT: ret i32 %array |
88 } | 97 } |
89 | 98 |
90 ; Show examples where size is not known at compile time. | 99 ; Show examples where size is not known at compile time. |
91 | 100 |
92 define i32 @AllocaVarsizeA0(i32 %n) { | 101 define i32 @AllocaVarsizeA0(i32 %n) { |
| 102 entry: |
93 %array = alloca i8, i32 %n | 103 %array = alloca i8, i32 %n |
94 %addr = ptrtoint i8* %array to i32 | 104 %addr = ptrtoint i8* %array to i32 |
95 ret i32 %addr | 105 ret i32 %addr |
96 | 106 |
97 ; CHECK: __0: | 107 ; CHECK: entry: |
98 ; CHECK-NEXT: %__1 = alloca i8, i32 %__0 | 108 ; CHECK-NEXT: %array = alloca i8, i32 %n |
99 ; CHECK-NEXT: ret i32 %__1 | 109 ; CHECK-NEXT: ret i32 %array |
100 } | 110 } |
101 | 111 |
102 define i32 @AllocaVarsizeA1(i32 %n) { | 112 define i32 @AllocaVarsizeA1(i32 %n) { |
| 113 entry: |
103 %array = alloca i8, i32 %n, align 1 | 114 %array = alloca i8, i32 %n, align 1 |
104 %addr = ptrtoint i8* %array to i32 | 115 %addr = ptrtoint i8* %array to i32 |
105 ret i32 %addr | 116 ret i32 %addr |
106 | 117 |
107 ; CHECK: __0: | 118 ; CHECK: entry: |
108 ; CHECK-NEXT: %__1 = alloca i8, i32 %__0, align 1 | 119 ; CHECK-NEXT: %array = alloca i8, i32 %n, align 1 |
109 ; CHECK-NEXT: ret i32 %__1 | 120 ; CHECK-NEXT: ret i32 %array |
110 } | 121 } |
111 | 122 |
112 define i32 @AllocaVarsizeA2(i32 %n) { | 123 define i32 @AllocaVarsizeA2(i32 %n) { |
| 124 entry: |
113 %array = alloca i8, i32 %n, align 2 | 125 %array = alloca i8, i32 %n, align 2 |
114 %addr = ptrtoint i8* %array to i32 | 126 %addr = ptrtoint i8* %array to i32 |
115 ret i32 %addr | 127 ret i32 %addr |
116 | 128 |
117 ; CHECK: __0: | 129 ; CHECK: entry: |
118 ; CHECK-NEXT: %__1 = alloca i8, i32 %__0, align 2 | 130 ; CHECK-NEXT: %array = alloca i8, i32 %n, align 2 |
119 ; CHECK-NEXT: ret i32 %__1 | 131 ; CHECK-NEXT: ret i32 %array |
120 } | 132 } |
121 | 133 |
122 define i32 @AllocaVarsizeA4(i32 %n) { | 134 define i32 @AllocaVarsizeA4(i32 %n) { |
| 135 entry: |
123 %array = alloca i8, i32 %n, align 4 | 136 %array = alloca i8, i32 %n, align 4 |
124 %addr = ptrtoint i8* %array to i32 | 137 %addr = ptrtoint i8* %array to i32 |
125 ret i32 %addr | 138 ret i32 %addr |
126 | 139 |
127 ; CHECK: __0: | 140 ; CHECK: entry: |
128 ; CHECK-NEXT: %__1 = alloca i8, i32 %__0, align 4 | 141 ; CHECK-NEXT: %array = alloca i8, i32 %n, align 4 |
129 ; CHECK-NEXT: ret i32 %__1 | 142 ; CHECK-NEXT: ret i32 %array |
130 } | 143 } |
131 | 144 |
132 define i32 @AllocaVarsizeA8(i32 %n) { | 145 define i32 @AllocaVarsizeA8(i32 %n) { |
| 146 entry: |
133 %array = alloca i8, i32 %n, align 8 | 147 %array = alloca i8, i32 %n, align 8 |
134 %addr = ptrtoint i8* %array to i32 | 148 %addr = ptrtoint i8* %array to i32 |
135 ret i32 %addr | 149 ret i32 %addr |
136 | 150 |
137 ; CHECK: __0: | 151 ; CHECK: entry: |
138 ; CHECK-NEXT: %__1 = alloca i8, i32 %__0, align 8 | 152 ; CHECK-NEXT: %array = alloca i8, i32 %n, align 8 |
139 ; CHECK-NEXT: ret i32 %__1 | 153 ; CHECK-NEXT: ret i32 %array |
140 } | 154 } |
141 | 155 |
142 define i32 @AllocaVarsizeA16(i32 %n) { | 156 define i32 @AllocaVarsizeA16(i32 %n) { |
| 157 entry: |
143 %array = alloca i8, i32 %n, align 16 | 158 %array = alloca i8, i32 %n, align 16 |
144 %addr = ptrtoint i8* %array to i32 | 159 %addr = ptrtoint i8* %array to i32 |
145 ret i32 %addr | 160 ret i32 %addr |
146 | 161 |
147 ; CHECK: __0: | 162 ; CHECK: entry: |
148 ; CHECK-NEXT: %__1 = alloca i8, i32 %__0, align 16 | 163 ; CHECK-NEXT: %array = alloca i8, i32 %n, align 16 |
149 ; CHECK-NEXT: ret i32 %__1 | 164 ; CHECK-NEXT: ret i32 %array |
150 } | 165 } |
OLD | NEW |