| ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 5 |
| ; RUN: opt < %s -passes=simplifycfg -simplifycfg-require-and-preserve-domtree=1 -hoist-common-insts=true -S | FileCheck %s |
| |
| declare void @bar(ptr) |
| declare void @baz(ptr) |
| |
| ; Check that align metadata is combined |
| define void @test_load_combine_metadata(i1 %c, ptr %p) { |
| ; CHECK-LABEL: define void @test_load_combine_metadata( |
| ; CHECK-SAME: i1 [[C:%.*]], ptr [[P:%.*]]) { |
| ; CHECK-NEXT: [[V1:%.*]] = load ptr, ptr [[P]], align 8, !align [[META0:![0-9]+]] |
| ; CHECK-NEXT: br i1 [[C]], label %[[T:.*]], label %[[F:.*]] |
| ; CHECK: [[T]]: |
| ; CHECK-NEXT: call void @bar(ptr [[V1]]) |
| ; CHECK-NEXT: br label %[[CONT:.*]] |
| ; CHECK: [[F]]: |
| ; CHECK-NEXT: call void @baz(ptr [[V1]]) |
| ; CHECK-NEXT: br label %[[CONT]] |
| ; CHECK: [[CONT]]: |
| ; CHECK-NEXT: ret void |
| ; |
| br i1 %c, label %t, label %f |
| |
| t: |
| %v1 = load ptr, ptr %p, !align !0 |
| call void @bar(ptr %v1) |
| br label %cont |
| |
| f: |
| %v2 = load ptr, ptr %p, !align !1 |
| call void @baz(ptr %v2) |
| br label %cont |
| |
| cont: |
| ret void |
| } |
| |
| define i64 @test_intersect_access_grou_metadata(i1 %c, ptr %p) { |
| ; CHECK-LABEL: define i64 @test_intersect_access_grou_metadata( |
| ; CHECK-SAME: i1 [[C:%.*]], ptr [[P:%.*]]) { |
| ; CHECK-NEXT: [[ENTRY:.*:]] |
| ; CHECK-NEXT: [[L_1:%.*]] = load i64, ptr [[P]], align 8, !llvm.access.group [[ACC_GRP1:![0-9]+]] |
| ; CHECK-NEXT: ret i64 [[L_1]] |
| ; |
| entry: |
| br i1 %c, label %then, label %else |
| |
| then: |
| %l.1 = load i64, ptr %p, align 8, !llvm.access.group !2 |
| br label %exit |
| |
| else: |
| %l.2 = load i64, ptr %p, align 8, !llvm.access.group !5 |
| br label %exit |
| |
| exit: |
| %res = phi i64 [ %l.1, %then ], [ %l.2, %else ] |
| ret i64 %res |
| } |
| |
| !0 = !{i64 8} |
| !1 = !{i64 16} |
| !2 = !{!3, !4} |
| !3 = distinct !{} |
| !4 = distinct !{} |
| !5 = !{!3, !6} |
| !6 = distinct !{} |
| ;. |
| ; CHECK: [[META0]] = !{i64 8} |
| ; CHECK: [[ACC_GRP1]] = distinct !{} |
| ;. |