1
+ ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 5
1
2
; RUN: opt < %s -O1 -S | FileCheck %s
2
3
3
4
target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128"
@@ -9,14 +10,22 @@ target triple = "x86_64-apple-macosx10.10.0"
9
10
; The important thing we're checking for here is the reload of (some element of)
10
11
; @a after the memset.
11
12
12
- ; CHECK-LABEL: @main
13
- ; CHECK: call void @llvm.memset.p0.i64{{.*}} @a
14
- ; CHECK: store i32 3
15
- ; CHECK: load i32, ptr getelementptr {{.*}} @a
16
- ; CHECK: icmp eq i32
17
- ; CHECK: br i1
18
-
19
13
define i32 @main () {
14
+ ; CHECK-LABEL: define noundef i32 @main(
15
+ ; CHECK-SAME: ) local_unnamed_addr #[[ATTR0:[0-9]+]] {
16
+ ; CHECK-NEXT: [[ENTRY:.*:]]
17
+ ; CHECK-NEXT: store i32 1, ptr getelementptr inbounds nuw (i8, ptr @a, i64 8), align 4
18
+ ; CHECK-NEXT: tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) @a, i8 0, i64 12, i1 false)
19
+ ; CHECK-NEXT: store i32 3, ptr @b, align 4
20
+ ; CHECK-NEXT: [[TMP0:%.*]] = load i32, ptr getelementptr inbounds nuw (i8, ptr @a, i64 8), align 4
21
+ ; CHECK-NEXT: [[CMP1_NOT:%.*]] = icmp eq i32 [[TMP0]], 0
22
+ ; CHECK-NEXT: br i1 [[CMP1_NOT]], label %[[IF_END:.*]], label %[[IF_THEN:.*]]
23
+ ; CHECK: [[IF_THEN]]:
24
+ ; CHECK-NEXT: tail call void @abort()
25
+ ; CHECK-NEXT: unreachable
26
+ ; CHECK: [[IF_END]]:
27
+ ; CHECK-NEXT: ret i32 0
28
+ ;
20
29
entry:
21
30
%retval = alloca i32 , align 4
22
31
%c = alloca [1 x i32 ], align 4
0 commit comments