Lines Matching full:pattern
2 // RUN: %clang_cc1 -triple x86_64-unknown-unknown -fblocks -ftrivial-auto-var-init=pattern %s -emit-llvm -o - | FileCheck %s -check-prefix=PATTERN
6 // PATTERN-NOT: undef
16 // PATTERN-LABEL: test_selfinit(
17 // PATTERN: store i32 -1431655766, ptr %self, align 4, !annotation [[AUTO_INIT:!.+]]
26 // PATTERN-LABEL: test_block(
27 // PATTERN: store i32 -1431655766, ptr %block, align 4, !annotation [[AUTO_INIT:!.+]]
43 // PATTERN-LABEL: test_block_self_init(
44 // PATTERN: %block = alloca <{ ptr, i32, i32, ptr, ptr, ptr }>, align 8
45 // PATTERN: %captured1 = getelementptr inbounds nuw %struct.__block_byref_captured, ptr %captured, i32 0, i32 4
46 // PATTERN-NEXT: store ptr inttoptr (i64 -6148914691236517206 to ptr), ptr %captured1, align 8, !annotation [[AUTO_INIT:!.+]]
47 // PATTERN: %call = call ptr @create(
67 // PATTERN-LABEL: test_block_captures_self_after_init(
68 // PATTERN: %block = alloca <{ ptr, i32, i32, ptr, ptr, ptr }>, align 8
69 // PATTERN: %captured1 = getelementptr inbounds nuw %struct.__block_byref_captured.1, ptr %captured, i32 0, i32 4
70 // PATTERN-NEXT: store ptr inttoptr (i64 -6148914691236517206 to ptr), ptr %captured1, align 8, !annotation [[AUTO_INIT:!.+]]
71 // PATTERN: %call = call ptr @create(
80 // This type of code is currently not handled by zero / pattern initialization.
85 // PATTERN-LABEL: test_goto_unreachable_value(
86 // PATTERN-NOT: store {{.*}}%oops
94 // This type of code is currently not handled by zero / pattern initialization.
103 // PATTERN-LABEL: test_goto(
104 // PATTERN: if.then:
105 // PATTERN: br label %jump
106 // PATTERN: store i32 -1431655766, ptr %oops, align 4, !annotation [[AUTO_INIT:!.+]]
107 // PATTERN: br label %jump
108 // PATTERN: jump:
117 // This type of code is currently not handled by zero / pattern initialization.
125 // PATTERN-LABEL: test_switch(
126 // PATTERN: sw.bb:
127 // PATTERN-NEXT: store i32 -1431655766, ptr %oops, align 4, !annotation [[AUTO_INIT:!.+]]
128 // PATTERN: sw.bb1:
129 // PATTERN-NEXT: call void @{{.*}}used
144 // PATTERN-LABEL: test_vla(
145 // PATTERN: %vla.iszerosized = icmp eq i64 %{{.*}}, 0
146 // PATTERN: br i1 %vla.iszerosized, label %vla-init.cont, label %vla-setup.loop
147 // PATTERN: vla-setup.loop:
148 // PATTERN: %[[SIZE:[0-9]+]] = mul nuw i64 %{{.*}}, 4
149 // PATTERN: %vla.end = getelementptr inbounds i8, ptr %vla, i64 %[[SIZE]]
150 // PATTERN: br label %vla-init.loop
151 // PATTERN: vla-init.loop:
152 // PATTERN: %vla.cur = phi ptr [ %vla, %vla-setup.loop ], [ %vla.next, %vla-init.loop ]
153 // PATTERN: call void @llvm.memcpy{{.*}} %vla.cur, {{.*}}@__const.test_vla.vla{{.*}}), !annotation [[AUTO_INIT:!.+]]
154 // PATTERN: %vla.next = getelementptr inbounds i8, ptr %vla.cur, i64 4
155 // PATTERN: %vla-init.isdone = icmp eq ptr %vla.next, %vla.end
156 // PATTERN: br i1 %vla-init.isdone, label %vla-init.cont, label %vla-init.loop
157 // PATTERN: vla-init.cont:
158 // PATTERN: call void @{{.*}}used
180 // PATTERN-LABEL: test_alloca(
181 // PATTERN: %[[SIZE:[a-z0-9]+]] = sext i32 %{{.*}} to i64
182 // PATTERN-NEXT: %[[ALLOCA:[a-z0-9]+]] = alloca i8, i64 %[[SIZE]], align [[ALIGN:[0-9]+]]
183 // PATTERN-NEXT: call void @llvm.memset{{.*}}(ptr align [[ALIGN]] %[[ALLOCA]], i8 -86, i64 %[[SIZE]], i1 false), !annotation [[AUTO_INIT:!.+]]
194 // PATTERN-LABEL: test_alloca_with_align(
195 // PATTERN: %[[SIZE:[a-z0-9]+]] = sext i32 %{{.*}} to i64
196 // PATTERN-NEXT: %[[ALLOCA:[a-z0-9]+]] = alloca i8, i64 %[[SIZE]], align 128
197 // PATTERN-NEXT: call void @llvm.memset{{.*}}(ptr align 128 %[[ALLOCA]], i8 -86, i64 %[[SIZE]], i1 false), !annotation [[AUTO_INIT:!.+]]
208 // PATTERN-LABEL: test_alloca_uninitialized(
209 // PATTERN: %[[SIZE:[a-z0-9]+]] = sext i32 %{{.*}} to i64
210 // PATTERN-NEXT: %[[ALLOCA:[a-z0-9]+]] = alloca i8, i64 %[[SIZE]], align [[ALIGN:[0-9]+]]
211 // PATTERN-NOT: call void @llvm.memset
222 // PATTERN-LABEL: test_alloca_with_align_uninitialized(
223 // PATTERN: %[[SIZE:[a-z0-9]+]] = sext i32 %{{.*}} to i64
224 // PATTERN-NEXT: %[[ALLOCA:[a-z0-9]+]] = alloca i8, i64 %[[SIZE]], align 128
225 // PATTERN-NOT: call void @llvm.memset
235 // PATTERN-LABEL: test_struct_vla(
236 // PATTERN: %vla.iszerosized = icmp eq i64 %{{.*}}, 0
237 // PATTERN: br i1 %vla.iszerosized, label %vla-init.cont, label %vla-setup.loop
238 // PATTERN: vla-setup.loop:
239 // PATTERN: %[[SIZE:[0-9]+]] = mul nuw i64 %{{.*}}, 16
240 // PATTERN: %vla.end = getelementptr inbounds i8, ptr %vla, i64 %[[SIZE]]
241 // PATTERN: br label %vla-init.loop
242 // PATTERN: vla-init.loop:
243 // PATTERN: %vla.cur = phi ptr [ %vla, %vla-setup.loop ], [ %vla.next, %vla-init.loop ]
244 // PATTERN: call void @llvm.memcpy{{.*}} %vla.cur, {{.*}}@__const.test_struct_vla.vla{{.*}}), !annotation [[AUTO_INIT:!.+]]
245 // PATTERN: %vla.next = getelementptr inbounds i8, ptr %vla.cur, i64 16
246 // PATTERN: %vla-init.isdone = icmp eq ptr %vla.next, %vla.end
247 // PATTERN: br i1 %vla-init.isdone, label %vla-init.cont, label %vla-init.loop
248 // PATTERN: vla-init.cont:
249 // PATTERN: call void @{{.*}}used
266 // PATTERN-LABEL: test_zsa(
267 // PATTERN: %zsa = alloca [0 x i32], align 4
268 // PATTERN-NOT: %zsa
269 // PATTERN: call void @{{.*}}used
280 // PATTERN-LABEL: test_huge_uninit(
281 // PATTERN: call void @llvm.memset{{.*}}, i8 -86, i64 65536, {{.*}}), !annotation [[AUTO_INIT:!.+]]
297 // PATTERN-LABEL: test_huge_small_init(
298 // PATTERN: call void @llvm.memset{{.*}}, i8 0, i64 65536,
299 // PATTERN-NOT: !annotation
300 // PATTERN: store i8 97,
301 // PATTERN: store i8 98,
302 // PATTERN: store i8 99,
303 // PATTERN: store i8 100,
313 // PATTERN-LABEL: test_huge_larger_init(
314 // PATTERN: call void @llvm.memcpy{{.*}} @__const.test_huge_larger_init.big, i64 65536,
315 // PATTERN-NOT: !annotation