|
| 1 | +; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 5 |
| 2 | +; RUN: opt -passes=dse -S < %s | FileCheck %s |
| 3 | + |
| 4 | +@g = global [100 x i32] zeroinitializer |
| 5 | + |
| 6 | +define i32 @test(i32 %i1, i32 %i2, i32 %i3) { |
| 7 | +; CHECK-LABEL: define i32 @test( |
| 8 | +; CHECK-SAME: i32 [[I1:%.*]], i32 [[I2:%.*]], i32 [[I3:%.*]]) { |
| 9 | +; CHECK-NEXT: [[P1:%.*]] = getelementptr i32, ptr @g, i32 [[I1]] |
| 10 | +; CHECK-NEXT: [[P2:%.*]] = getelementptr i32, ptr @g, i32 [[I2]] |
| 11 | +; CHECK-NEXT: [[P1_P:%.*]] = call ptr @llvm.experimental.provenance.begin.p0.p0(ptr [[P1]]) |
| 12 | +; CHECK-NEXT: [[R:%.*]] = load i32, ptr [[P2]], align 4 |
| 13 | +; CHECK-NEXT: store i32 1, ptr [[P1_P]], align 4 |
| 14 | +; CHECK-NEXT: call void @llvm.experimental.provenance.end.p0(ptr [[P1_P]]) |
| 15 | +; CHECK-NEXT: [[R1:%.*]] = load i32, ptr [[P1_P]], align 4 |
| 16 | +; CHECK-NEXT: [[R2:%.*]] = add i32 [[R]], [[R1]] |
| 17 | +; CHECK-NEXT: ret i32 [[R2]] |
| 18 | +; |
| 19 | + %p1 = getelementptr i32, ptr @g, i32 %i1 |
| 20 | + %p2 = getelementptr i32, ptr @g, i32 %i2 |
| 21 | + %p1.p = call ptr @llvm.experimental.provenance.begin(ptr %p1) |
| 22 | + store i32 0, ptr %p1.p |
| 23 | + %r = load i32, ptr %p2 |
| 24 | + store i32 1, ptr %p1.p |
| 25 | + call void @llvm.experimental.provenance.end(ptr %p1.p) |
| 26 | + %r1 = load i32, ptr %p1.p |
| 27 | + %r2 = add i32 %r, %r1 |
| 28 | + ret i32 %r2 |
| 29 | +} |
0 commit comments