|
| 1 | +; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 6 |
| 2 | +; RUN: opt -S -passes=attributor %s -o - | FileCheck %s |
| 3 | + |
| 4 | +@g = internal unnamed_addr addrspace(4) constant [3 x i8] c"12\00", align 16 |
| 5 | + |
| 6 | +define void @foo(i32 %a, i32 %b, ptr %p) { |
| 7 | +; CHECK-LABEL: define void @foo( |
| 8 | +; CHECK-SAME: i32 [[A:%.*]], i32 [[B:%.*]], ptr nofree nonnull writeonly captures(none) dereferenceable(1) [[P:%.*]]) #[[ATTR0:[0-9]+]] { |
| 9 | +; CHECK-NEXT: [[ENTRY:.*:]] |
| 10 | +; CHECK-NEXT: [[CMP:%.*]] = icmp ne i32 [[A]], [[B]] |
| 11 | +; CHECK-NEXT: br i1 [[CMP]], label %[[L1:.*]], label %[[L2:.*]] |
| 12 | +; CHECK: [[L1]]: |
| 13 | +; CHECK-NEXT: br label %[[L3:.*]] |
| 14 | +; CHECK: [[L2]]: |
| 15 | +; CHECK-NEXT: br label %[[L3]] |
| 16 | +; CHECK: [[L3]]: |
| 17 | +; CHECK-NEXT: [[PHI:%.*]] = phi ptr addrspace(4) [ @g, %[[L1]] ], [ getelementptr inbounds nuw (i8, ptr addrspace(4) @g, i64 1), %[[L2]] ] |
| 18 | +; CHECK-NEXT: [[LOAD:%.*]] = load i8, ptr addrspace(4) [[PHI]], align 1 |
| 19 | +; CHECK-NEXT: store i8 [[LOAD]], ptr [[P]], align 1 |
| 20 | +; CHECK-NEXT: ret void |
| 21 | +; |
| 22 | +entry: |
| 23 | + %cmp = icmp ne i32 %a, %b |
| 24 | + br i1 %cmp, label %l1, label %l2 |
| 25 | +l1: |
| 26 | + br label %l3 |
| 27 | +l2: |
| 28 | + br label %l3 |
| 29 | +l3: |
| 30 | + %phi = phi ptr addrspace(4) [ @g, %l1 ], [ getelementptr inbounds nuw (i8, ptr addrspace(4) @g, i64 1), %l2 ] |
| 31 | + %load = load i8, ptr addrspace(4) %phi |
| 32 | + store i8 %load, ptr %p |
| 33 | + ret void |
| 34 | +} |
0 commit comments