diff options
Diffstat (limited to 'test/Transforms/InstMerge')
-rw-r--r-- | test/Transforms/InstMerge/ld_hoist1.ll | 22 | ||||
-rw-r--r-- | test/Transforms/InstMerge/ld_hoist_st_sink.ll | 62 | ||||
-rw-r--r-- | test/Transforms/InstMerge/st_sink_barrier_call.ll | 14 | ||||
-rw-r--r-- | test/Transforms/InstMerge/st_sink_bugfix_22613.ll | 26 | ||||
-rw-r--r-- | test/Transforms/InstMerge/st_sink_no_barrier_call.ll | 14 | ||||
-rw-r--r-- | test/Transforms/InstMerge/st_sink_no_barrier_load.ll | 20 | ||||
-rw-r--r-- | test/Transforms/InstMerge/st_sink_no_barrier_store.ll | 16 | ||||
-rw-r--r-- | test/Transforms/InstMerge/st_sink_two_stores.ll | 18 | ||||
-rw-r--r-- | test/Transforms/InstMerge/st_sink_with_barrier.ll | 20 |
9 files changed, 106 insertions, 106 deletions
diff --git a/test/Transforms/InstMerge/ld_hoist1.ll b/test/Transforms/InstMerge/ld_hoist1.ll index 715f1b8..74c8900 100644 --- a/test/Transforms/InstMerge/ld_hoist1.ll +++ b/test/Transforms/InstMerge/ld_hoist1.ll @@ -15,35 +15,35 @@ for.body.lr.ph: ; preds = %entry ; CHECK-LABEL: for.body ; CHECK: load -; CHECK: %2 = getelementptr inbounds i32* %in, i64 %indvars.iv -; CHECK: %3 = load i32* %2, align 4 +; CHECK: %2 = getelementptr inbounds i32, i32* %in, i64 %indvars.iv +; CHECK: %3 = load i32, i32* %2, align 4 for.body: ; preds = %for.body.lr.ph, %for.inc %indvars.iv = phi i64 [ 0, %for.body.lr.ph ], [ %indvars.iv.next, %for.inc ] - %arrayidx = getelementptr inbounds i32* %trigger, i64 %indvars.iv - %1 = load i32* %arrayidx, align 4 + %arrayidx = getelementptr inbounds i32, i32* %trigger, i64 %indvars.iv + %1 = load i32, i32* %arrayidx, align 4 %cmp1 = icmp sgt i32 %1, 0 br i1 %cmp1, label %if.then, label %if.else ; CHECK-LABEL: if.then if.then: ; preds = %for.body ; This load should be hoisted - %arrayidx3 = getelementptr inbounds i32* %in, i64 %indvars.iv - %2 = load i32* %arrayidx3, align 4 + %arrayidx3 = getelementptr inbounds i32, i32* %in, i64 %indvars.iv + %2 = load i32, i32* %arrayidx3, align 4 %conv = sitofp i32 %2 to float %add = fadd float %conv, 5.000000e-01 - %arrayidx5 = getelementptr inbounds float* %out, i64 %indvars.iv + %arrayidx5 = getelementptr inbounds float, float* %out, i64 %indvars.iv store float %add, float* %arrayidx5, align 4 br label %for.inc if.else: ; preds = %for.body - %arrayidx7 = getelementptr inbounds float* %out, i64 %indvars.iv - %3 = load float* %arrayidx7, align 4 + %arrayidx7 = getelementptr inbounds float, float* %out, i64 %indvars.iv + %3 = load float, float* %arrayidx7, align 4 %div = fdiv float %3, 3.000000e+00 store float %div, float* %arrayidx7, align 4 ; This load should be hoisted in spite of store - %arrayidx9 = getelementptr inbounds i32* %in, i64 %indvars.iv - %4 = load i32* %arrayidx9, align 4 + %arrayidx9 = getelementptr inbounds i32, i32* %in, i64 %indvars.iv + %4 = load i32, i32* %arrayidx9, align 4 %conv10 = sitofp i32 %4 to float %add13 = fadd float %div, %conv10 store float %add13, float* %arrayidx7, align 4 diff --git a/test/Transforms/InstMerge/ld_hoist_st_sink.ll b/test/Transforms/InstMerge/ld_hoist_st_sink.ll index 978160a..1d3f941 100644 --- a/test/Transforms/InstMerge/ld_hoist_st_sink.ll +++ b/test/Transforms/InstMerge/ld_hoist_st_sink.ll @@ -8,8 +8,8 @@ target datalayout = "e-m:o-i64:64-i128:128-n32:64-S128" define i64 @foo(%struct.node* nocapture readonly %r) nounwind { entry: - %node.0.in16 = getelementptr inbounds %struct.node* %r, i64 0, i32 2 - %node.017 = load %struct.node** %node.0.in16, align 8 + %node.0.in16 = getelementptr inbounds %struct.node, %struct.node* %r, i64 0, i32 2 + %node.017 = load %struct.node*, %struct.node** %node.0.in16, align 8 %tobool18 = icmp eq %struct.node* %node.017, null br i1 %tobool18, label %while.end, label %while.body.preheader @@ -21,46 +21,46 @@ while.body.preheader: ; preds = %entry while.body: ; preds = %while.body.preheader, %if.end %node.020 = phi %struct.node* [ %node.0, %if.end ], [ %node.017, %while.body.preheader ] %sum.019 = phi i64 [ %inc, %if.end ], [ 0, %while.body.preheader ] - %orientation = getelementptr inbounds %struct.node* %node.020, i64 0, i32 4 - %0 = load i64* %orientation, align 8 + %orientation = getelementptr inbounds %struct.node, %struct.node* %node.020, i64 0, i32 4 + %0 = load i64, i64* %orientation, align 8 %cmp = icmp eq i64 %0, 1 br i1 %cmp, label %if.then, label %if.else ; CHECK: if.then if.then: ; preds = %while.body - %a = getelementptr inbounds %struct.node* %node.020, i64 0, i32 5 + %a = getelementptr inbounds %struct.node, %struct.node* %node.020, i64 0, i32 5 ; CHECK-NOT: load %struct.arc - %1 = load %struct.arc** %a, align 8 - %cost = getelementptr inbounds %struct.arc* %1, i64 0, i32 0 -; CHECK-NOT: load i64* - %2 = load i64* %cost, align 8 - %pred = getelementptr inbounds %struct.node* %node.020, i64 0, i32 1 -; CHECK-NOT: load %struct.node** - %3 = load %struct.node** %pred, align 8 - %p = getelementptr inbounds %struct.node* %3, i64 0, i32 6 -; CHECK-NOT: load i64* - %4 = load i64* %p, align 8 + %1 = load %struct.arc*, %struct.arc** %a, align 8 + %cost = getelementptr inbounds %struct.arc, %struct.arc* %1, i64 0, i32 0 +; CHECK-NOT: load i64, i64* + %2 = load i64, i64* %cost, align 8 + %pred = getelementptr inbounds %struct.node, %struct.node* %node.020, i64 0, i32 1 +; CHECK-NOT: load %struct.node*, %struct.node** + %3 = load %struct.node*, %struct.node** %pred, align 8 + %p = getelementptr inbounds %struct.node, %struct.node* %3, i64 0, i32 6 +; CHECK-NOT: load i64, i64* + %4 = load i64, i64* %p, align 8 %add = add nsw i64 %4, %2 - %p1 = getelementptr inbounds %struct.node* %node.020, i64 0, i32 6 + %p1 = getelementptr inbounds %struct.node, %struct.node* %node.020, i64 0, i32 6 ; CHECK-NOT: store i64 store i64 %add, i64* %p1, align 8 br label %if.end ; CHECK: if.else if.else: ; preds = %while.body - %pred2 = getelementptr inbounds %struct.node* %node.020, i64 0, i32 1 -; CHECK-NOT: load %struct.node** - %5 = load %struct.node** %pred2, align 8 - %p3 = getelementptr inbounds %struct.node* %5, i64 0, i32 6 -; CHECK-NOT: load i64* - %6 = load i64* %p3, align 8 - %a4 = getelementptr inbounds %struct.node* %node.020, i64 0, i32 5 -; CHECK-NOT: load %struct.arc** - %7 = load %struct.arc** %a4, align 8 - %cost5 = getelementptr inbounds %struct.arc* %7, i64 0, i32 0 -; CHECK-NOT: load i64* - %8 = load i64* %cost5, align 8 + %pred2 = getelementptr inbounds %struct.node, %struct.node* %node.020, i64 0, i32 1 +; CHECK-NOT: load %struct.node*, %struct.node** + %5 = load %struct.node*, %struct.node** %pred2, align 8 + %p3 = getelementptr inbounds %struct.node, %struct.node* %5, i64 0, i32 6 +; CHECK-NOT: load i64, i64* + %6 = load i64, i64* %p3, align 8 + %a4 = getelementptr inbounds %struct.node, %struct.node* %node.020, i64 0, i32 5 +; CHECK-NOT: load %struct.arc*, %struct.arc** + %7 = load %struct.arc*, %struct.arc** %a4, align 8 + %cost5 = getelementptr inbounds %struct.arc, %struct.arc* %7, i64 0, i32 0 +; CHECK-NOT: load i64, i64* + %8 = load i64, i64* %cost5, align 8 %sub = sub nsw i64 %6, %8 - %p6 = getelementptr inbounds %struct.node* %node.020, i64 0, i32 6 + %p6 = getelementptr inbounds %struct.node, %struct.node* %node.020, i64 0, i32 6 ; CHECK-NOT: store i64 store i64 %sub, i64* %p6, align 8 br label %if.end @@ -69,8 +69,8 @@ if.else: ; preds = %while.body if.end: ; preds = %if.else, %if.then ; CHECK: store %inc = add nsw i64 %sum.019, 1 - %node.0.in = getelementptr inbounds %struct.node* %node.020, i64 0, i32 2 - %node.0 = load %struct.node** %node.0.in, align 8 + %node.0.in = getelementptr inbounds %struct.node, %struct.node* %node.020, i64 0, i32 2 + %node.0 = load %struct.node*, %struct.node** %node.0.in, align 8 %tobool = icmp eq %struct.node* %node.0, null br i1 %tobool, label %while.end.loopexit, label %while.body diff --git a/test/Transforms/InstMerge/st_sink_barrier_call.ll b/test/Transforms/InstMerge/st_sink_barrier_call.ll index c158b00..cdcc346 100644 --- a/test/Transforms/InstMerge/st_sink_barrier_call.ll +++ b/test/Transforms/InstMerge/st_sink_barrier_call.ll @@ -10,27 +10,27 @@ declare i32 @foo(i32 %x) ; Function Attrs: nounwind uwtable define void @sink_store(%struct.node* nocapture %r, i32 %index) { entry: - %node.0.in16 = getelementptr inbounds %struct.node* %r, i64 0, i32 2 - %node.017 = load %struct.node** %node.0.in16, align 8 + %node.0.in16 = getelementptr inbounds %struct.node, %struct.node* %r, i64 0, i32 2 + %node.017 = load %struct.node*, %struct.node** %node.0.in16, align 8 %index.addr = alloca i32, align 4 store i32 %index, i32* %index.addr, align 4 - %0 = load i32* %index.addr, align 4 + %0 = load i32, i32* %index.addr, align 4 %cmp = icmp slt i32 %0, 0 br i1 %cmp, label %if.then, label %if.else ; CHECK: if.then if.then: ; preds = %entry - %1 = load i32* %index.addr, align 4 - %p1 = getelementptr inbounds %struct.node* %node.017, i32 0, i32 6 + %1 = load i32, i32* %index.addr, align 4 + %p1 = getelementptr inbounds %struct.node, %struct.node* %node.017, i32 0, i32 6 ; CHECK: store i32 store i32 %1, i32* %p1, align 4 br label %if.end ; CHECK: if.else if.else: ; preds = %entry - %2 = load i32* %index.addr, align 4 + %2 = load i32, i32* %index.addr, align 4 %add = add nsw i32 %2, 1 - %p3 = getelementptr inbounds %struct.node* %node.017, i32 0, i32 6 + %p3 = getelementptr inbounds %struct.node, %struct.node* %node.017, i32 0, i32 6 ; CHECK: store i32 store i32 %add, i32* %p3, align 4 call i32 @foo(i32 5) ;barrier diff --git a/test/Transforms/InstMerge/st_sink_bugfix_22613.ll b/test/Transforms/InstMerge/st_sink_bugfix_22613.ll index 34e3fdb..575f239 100644 --- a/test/Transforms/InstMerge/st_sink_bugfix_22613.ll +++ b/test/Transforms/InstMerge/st_sink_bugfix_22613.ll @@ -26,46 +26,46 @@ entry: br label %for.cond for.cond: ; preds = %for.inc8, %entry - %0 = load i32* @d, align 4 + %0 = load i32, i32* @d, align 4 %cmp = icmp slt i32 %0, 2 br i1 %cmp, label %for.body, label %for.end10 for.body: ; preds = %for.cond - %1 = load i32* @d, align 4 + %1 = load i32, i32* @d, align 4 %idxprom = sext i32 %1 to i64 - %2 = load i32* @b, align 4 + %2 = load i32, i32* @b, align 4 %idxprom1 = sext i32 %2 to i64 - %arrayidx = getelementptr inbounds [1 x [3 x i8]]* @f, i32 0, i64 %idxprom1 - %arrayidx2 = getelementptr inbounds [3 x i8]* %arrayidx, i32 0, i64 %idxprom + %arrayidx = getelementptr inbounds [1 x [3 x i8]], [1 x [3 x i8]]* @f, i32 0, i64 %idxprom1 + %arrayidx2 = getelementptr inbounds [3 x i8], [3 x i8]* %arrayidx, i32 0, i64 %idxprom store i8 0, i8* %arrayidx2, align 1 store i32 0, i32* @e, align 4 br label %for.cond3 for.cond3: ; preds = %for.inc, %for.body - %3 = load i32* @e, align 4 + %3 = load i32, i32* @e, align 4 %cmp4 = icmp slt i32 %3, 3 br i1 %cmp4, label %for.body5, label %for.end for.body5: ; preds = %for.cond3 - %4 = load i32* @c, align 4 + %4 = load i32, i32* @c, align 4 %tobool = icmp ne i32 %4, 0 br i1 %tobool, label %if.then, label %if.end if.then: ; preds = %for.body5 - %5 = load i32* @a, align 4 + %5 = load i32, i32* @a, align 4 %dec = add nsw i32 %5, -1 store i32 %dec, i32* @a, align 4 br label %if.end if.end: ; preds = %if.then, %for.body5 - %6 = load i32* @e, align 4 + %6 = load i32, i32* @e, align 4 %idxprom6 = sext i32 %6 to i64 - %arrayidx7 = getelementptr inbounds [3 x i8]* getelementptr inbounds ([1 x [3 x i8]]* @f, i32 0, i64 0), i32 0, i64 %idxprom6 + %arrayidx7 = getelementptr inbounds [3 x i8], [3 x i8]* getelementptr inbounds ([1 x [3 x i8]], [1 x [3 x i8]]* @f, i32 0, i64 0), i32 0, i64 %idxprom6 store i8 1, i8* %arrayidx7, align 1 br label %for.inc for.inc: ; preds = %if.end - %7 = load i32* @e, align 4 + %7 = load i32, i32* @e, align 4 %inc = add nsw i32 %7, 1 store i32 %inc, i32* @e, align 4 br label %for.cond3 @@ -74,7 +74,7 @@ for.end: ; preds = %for.cond3 br label %for.inc8 for.inc8: ; preds = %for.end - %8 = load i32* @d, align 4 + %8 = load i32, i32* @d, align 4 %inc9 = add nsw i32 %8, 1 store i32 %inc9, i32* @d, align 4 br label %for.cond @@ -89,7 +89,7 @@ entry: %retval = alloca i32, align 4 store i32 0, i32* %retval call void @fn1() - %0 = load i8* getelementptr inbounds ([1 x [3 x i8]]* @f, i32 0, i64 0, i64 1), align 1 + %0 = load i8, i8* getelementptr inbounds ([1 x [3 x i8]], [1 x [3 x i8]]* @f, i32 0, i64 0, i64 1), align 1 %conv = sext i8 %0 to i32 %cmp = icmp ne i32 %conv, 1 br i1 %cmp, label %if.then, label %if.end diff --git a/test/Transforms/InstMerge/st_sink_no_barrier_call.ll b/test/Transforms/InstMerge/st_sink_no_barrier_call.ll index 72f1fdf..0ad90f8 100644 --- a/test/Transforms/InstMerge/st_sink_no_barrier_call.ll +++ b/test/Transforms/InstMerge/st_sink_no_barrier_call.ll @@ -10,27 +10,27 @@ declare i32 @foo(i32 %x) #0 ; Function Attrs: nounwind uwtable define void @sink_store(%struct.node* nocapture %r, i32 %index) { entry: - %node.0.in16 = getelementptr inbounds %struct.node* %r, i64 0, i32 2 - %node.017 = load %struct.node** %node.0.in16, align 8 + %node.0.in16 = getelementptr inbounds %struct.node, %struct.node* %r, i64 0, i32 2 + %node.017 = load %struct.node*, %struct.node** %node.0.in16, align 8 %index.addr = alloca i32, align 4 store i32 %index, i32* %index.addr, align 4 - %0 = load i32* %index.addr, align 4 + %0 = load i32, i32* %index.addr, align 4 %cmp = icmp slt i32 %0, 0 br i1 %cmp, label %if.then, label %if.else ; CHECK: if.then if.then: ; preds = %entry - %1 = load i32* %index.addr, align 4 - %p1 = getelementptr inbounds %struct.node* %node.017, i32 0, i32 6 + %1 = load i32, i32* %index.addr, align 4 + %p1 = getelementptr inbounds %struct.node, %struct.node* %node.017, i32 0, i32 6 ; CHECK-NOT: store i32 store i32 %1, i32* %p1, align 4 br label %if.end ; CHECK: if.else if.else: ; preds = %entry - %2 = load i32* %index.addr, align 4 + %2 = load i32, i32* %index.addr, align 4 %add = add nsw i32 %2, 1 - %p3 = getelementptr inbounds %struct.node* %node.017, i32 0, i32 6 + %p3 = getelementptr inbounds %struct.node, %struct.node* %node.017, i32 0, i32 6 ; CHECK-NOT: store i32 store i32 %add, i32* %p3, align 4 call i32 @foo(i32 5) ;not a barrier diff --git a/test/Transforms/InstMerge/st_sink_no_barrier_load.ll b/test/Transforms/InstMerge/st_sink_no_barrier_load.ll index 5be0c25..b7236e4 100644 --- a/test/Transforms/InstMerge/st_sink_no_barrier_load.ll +++ b/test/Transforms/InstMerge/st_sink_no_barrier_load.ll @@ -8,30 +8,30 @@ target datalayout = "e-m:o-i64:64-i128:128-n32:64-S128" ; Function Attrs: nounwind uwtable define void @sink_store(%struct.node* nocapture %r, i32 %index) { entry: - %node.0.in16 = getelementptr inbounds %struct.node* %r, i64 0, i32 2 - %node.017 = load %struct.node** %node.0.in16, align 8 + %node.0.in16 = getelementptr inbounds %struct.node, %struct.node* %r, i64 0, i32 2 + %node.017 = load %struct.node*, %struct.node** %node.0.in16, align 8 %index.addr = alloca i32, align 4 store i32 %index, i32* %index.addr, align 4 - %0 = load i32* %index.addr, align 4 + %0 = load i32, i32* %index.addr, align 4 %cmp = icmp slt i32 %0, 0 br i1 %cmp, label %if.then, label %if.else ; CHECK: if.then if.then: ; preds = %entry - %1 = load i32* %index.addr, align 4 - %p1 = getelementptr inbounds %struct.node* %node.017, i32 0, i32 6 + %1 = load i32, i32* %index.addr, align 4 + %p1 = getelementptr inbounds %struct.node, %struct.node* %node.017, i32 0, i32 6 ; CHECK-NOT: store i32 store i32 %1, i32* %p1, align 4 - %p2 = getelementptr inbounds %struct.node* %node.017, i32 5, i32 6 - ; CHECK: load i32* - %not_barrier = load i32 * %p2, align 4 + %p2 = getelementptr inbounds %struct.node, %struct.node* %node.017, i32 5, i32 6 + ; CHECK: load i32, i32* + %not_barrier = load i32 , i32 * %p2, align 4 br label %if.end ; CHECK: if.else if.else: ; preds = %entry - %2 = load i32* %index.addr, align 4 + %2 = load i32, i32* %index.addr, align 4 %add = add nsw i32 %2, 1 - %p3 = getelementptr inbounds %struct.node* %node.017, i32 0, i32 6 + %p3 = getelementptr inbounds %struct.node, %struct.node* %node.017, i32 0, i32 6 ; CHECK-NOT: store i32 store i32 %add, i32* %p3, align 4 br label %if.end diff --git a/test/Transforms/InstMerge/st_sink_no_barrier_store.ll b/test/Transforms/InstMerge/st_sink_no_barrier_store.ll index 06e2b63..e13f28a 100644 --- a/test/Transforms/InstMerge/st_sink_no_barrier_store.ll +++ b/test/Transforms/InstMerge/st_sink_no_barrier_store.ll @@ -8,29 +8,29 @@ target datalayout = "e-m:o-i64:64-i128:128-n32:64-S128" ; Function Attrs: nounwind uwtable define void @sink_store(%struct.node* nocapture %r, i32 %index) { entry: - %node.0.in16 = getelementptr inbounds %struct.node* %r, i64 0, i32 2 - %node.017 = load %struct.node** %node.0.in16, align 8 + %node.0.in16 = getelementptr inbounds %struct.node, %struct.node* %r, i64 0, i32 2 + %node.017 = load %struct.node*, %struct.node** %node.0.in16, align 8 %index.addr = alloca i32, align 4 store i32 %index, i32* %index.addr, align 4 - %0 = load i32* %index.addr, align 4 + %0 = load i32, i32* %index.addr, align 4 %cmp = icmp slt i32 %0, 0 br i1 %cmp, label %if.then, label %if.else ; CHECK: if.then if.then: ; preds = %entry - %1 = load i32* %index.addr, align 4 - %p1 = getelementptr inbounds %struct.node* %node.017, i32 0, i32 6 + %1 = load i32, i32* %index.addr, align 4 + %p1 = getelementptr inbounds %struct.node, %struct.node* %node.017, i32 0, i32 6 ; CHECK-NOT: store i32 store i32 %1, i32* %p1, align 4 br label %if.end ; CHECK: if.else if.else: ; preds = %entry - %2 = load i32* %index.addr, align 4 + %2 = load i32, i32* %index.addr, align 4 %add = add nsw i32 %2, 1 - %p2 = getelementptr inbounds %struct.node* %node.017, i32 0, i32 6 + %p2 = getelementptr inbounds %struct.node, %struct.node* %node.017, i32 0, i32 6 store i32 %add, i32* %p2, align 4 - %p3 = getelementptr inbounds %struct.node* %node.017, i32 5, i32 6 + %p3 = getelementptr inbounds %struct.node, %struct.node* %node.017, i32 5, i32 6 ; CHECK: store i32 store i32 %add, i32* %p3, align 4 ; This is not a barrier br label %if.end diff --git a/test/Transforms/InstMerge/st_sink_two_stores.ll b/test/Transforms/InstMerge/st_sink_two_stores.ll index 1f7c6aa..5b5582f 100644 --- a/test/Transforms/InstMerge/st_sink_two_stores.ll +++ b/test/Transforms/InstMerge/st_sink_two_stores.ll @@ -8,33 +8,33 @@ target datalayout = "e-m:o-i64:64-i128:128-n32:64-S128" ; Function Attrs: nounwind uwtable define void @sink_store(%struct.node* nocapture %r, i32 %index) { entry: - %node.0.in16 = getelementptr inbounds %struct.node* %r, i64 0, i32 2 - %node.017 = load %struct.node** %node.0.in16, align 8 + %node.0.in16 = getelementptr inbounds %struct.node, %struct.node* %r, i64 0, i32 2 + %node.017 = load %struct.node*, %struct.node** %node.0.in16, align 8 %index.addr = alloca i32, align 4 store i32 %index, i32* %index.addr, align 4 - %0 = load i32* %index.addr, align 4 + %0 = load i32, i32* %index.addr, align 4 %cmp = icmp slt i32 %0, 0 br i1 %cmp, label %if.then, label %if.else ; CHECK: if.then if.then: ; preds = %entry - %1 = load i32* %index.addr, align 4 - %p1 = getelementptr inbounds %struct.node* %node.017, i32 0, i32 6 + %1 = load i32, i32* %index.addr, align 4 + %p1 = getelementptr inbounds %struct.node, %struct.node* %node.017, i32 0, i32 6 ; CHECK-NOT: store i32 store i32 %1, i32* %p1, align 4 - %p2 = getelementptr inbounds %struct.node* %node.017, i32 4, i32 6 + %p2 = getelementptr inbounds %struct.node, %struct.node* %node.017, i32 4, i32 6 ; CHECK-NOT: store i32 store i32 %1, i32* %p2, align 4 br label %if.end ; CHECK: if.else if.else: ; preds = %entry - %2 = load i32* %index.addr, align 4 + %2 = load i32, i32* %index.addr, align 4 %add = add nsw i32 %2, 1 - %p3 = getelementptr inbounds %struct.node* %node.017, i32 0, i32 6 + %p3 = getelementptr inbounds %struct.node, %struct.node* %node.017, i32 0, i32 6 ; CHECK-NOT: store i32 store i32 %add, i32* %p3, align 4 - %p4 = getelementptr inbounds %struct.node* %node.017, i32 4, i32 6 + %p4 = getelementptr inbounds %struct.node, %struct.node* %node.017, i32 4, i32 6 ; CHECK-NOT: store i32 store i32 %2, i32* %p4, align 4 br label %if.end diff --git a/test/Transforms/InstMerge/st_sink_with_barrier.ll b/test/Transforms/InstMerge/st_sink_with_barrier.ll index d4efaa7..a05ae88 100644 --- a/test/Transforms/InstMerge/st_sink_with_barrier.ll +++ b/test/Transforms/InstMerge/st_sink_with_barrier.ll @@ -7,30 +7,30 @@ target datalayout = "e-m:o-i64:64-i128:128-n32:64-S128" ; Function Attrs: nounwind uwtable define void @sink_store(%struct.node* nocapture %r, i32 %index) { entry: - %node.0.in16 = getelementptr inbounds %struct.node* %r, i64 0, i32 2 - %node.017 = load %struct.node** %node.0.in16, align 8 + %node.0.in16 = getelementptr inbounds %struct.node, %struct.node* %r, i64 0, i32 2 + %node.017 = load %struct.node*, %struct.node** %node.0.in16, align 8 %index.addr = alloca i32, align 4 store i32 %index, i32* %index.addr, align 4 - %0 = load i32* %index.addr, align 4 + %0 = load i32, i32* %index.addr, align 4 %cmp = icmp slt i32 %0, 0 br i1 %cmp, label %if.then, label %if.else ; CHECK: if.then if.then: ; preds = %entry - %1 = load i32* %index.addr, align 4 - %p1 = getelementptr inbounds %struct.node* %node.017, i32 0, i32 6 + %1 = load i32, i32* %index.addr, align 4 + %p1 = getelementptr inbounds %struct.node, %struct.node* %node.017, i32 0, i32 6 ; CHECK: store i32 store i32 %1, i32* %p1, align 4 - %p2 = getelementptr inbounds %struct.node* %node.017, i32 0, i32 6 - ; CHECK: load i32* - %barrier = load i32 * %p2, align 4 + %p2 = getelementptr inbounds %struct.node, %struct.node* %node.017, i32 0, i32 6 + ; CHECK: load i32, i32* + %barrier = load i32 , i32 * %p2, align 4 br label %if.end ; CHECK: if.else if.else: ; preds = %entry - %2 = load i32* %index.addr, align 4 + %2 = load i32, i32* %index.addr, align 4 %add = add nsw i32 %2, 1 - %p3 = getelementptr inbounds %struct.node* %node.017, i32 0, i32 6 + %p3 = getelementptr inbounds %struct.node, %struct.node* %node.017, i32 0, i32 6 ; CHECK: store i32 store i32 %add, i32* %p3, align 4 br label %if.end |