Imported Upstream version 5.18.0.205

Former-commit-id: 7f59f7e792705db773f1caecdaa823092f4e2927
This commit is contained in:
Xamarin Public Jenkins (auto-signing)
2018-11-16 08:20:38 +00:00
parent 5cd5df71cc
commit 8e12397d70
28486 changed files with 3867013 additions and 66 deletions

View File

@@ -0,0 +1,22 @@
; RUN: opt < %s -analyze -scalar-evolution -scalar-evolution-max-iterations=0 | FileCheck %s
; PR1533
@array = weak global [101 x i32] zeroinitializer, align 32 ; <[100 x i32]*> [#uses=1]
; CHECK: Loop %bb: backedge-taken count is 100
define void @loop(i32 %x) {
entry:
br label %bb
bb: ; preds = %bb, %entry
%i.01.0 = phi i32 [ 100, %entry ], [ %tmp4, %bb ] ; <i32> [#uses=2]
%tmp1 = getelementptr [101 x i32], [101 x i32]* @array, i32 0, i32 %i.01.0 ; <i32*> [#uses=1]
store i32 %x, i32* %tmp1
%tmp4 = add i32 %i.01.0, -1 ; <i32> [#uses=2]
%tmp7 = icmp sgt i32 %tmp4, -1 ; <i1> [#uses=1]
br i1 %tmp7, label %bb, label %return
return: ; preds = %bb
ret void
}

View File

@@ -0,0 +1,20 @@
; RUN: opt < %s -indvars -adce -simplifycfg -S | FileCheck %s
; PR1598
; CHECK: icmp s
define i32 @f(i32 %a, i32 %b, i32 %x, i32 %y) {
entry:
%tmp3 = icmp eq i32 %a, %b ; <i1> [#uses=1]
br i1 %tmp3, label %return, label %bb
bb: ; preds = %bb, %entry
%x_addr.0 = phi i32 [ %tmp6, %bb ], [ %x, %entry ] ; <i32> [#uses=1]
%tmp6 = add i32 %x_addr.0, 1 ; <i32> [#uses=3]
%tmp9 = icmp slt i32 %tmp6, %y ; <i1> [#uses=1]
br i1 %tmp9, label %bb, label %return
return: ; preds = %bb, %entry
%x_addr.1 = phi i32 [ %x, %entry ], [ %tmp6, %bb ] ; <i32> [#uses=1]
ret i32 %x_addr.1
}

View File

@@ -0,0 +1,32 @@
; RUN: opt < %s -scalar-evolution -analyze | FileCheck %s
; PR1597
; CHECK: Loop %bb: backedge-taken count is (-1 + (-1 * %x) + %y)
define i32 @f(i32 %x, i32 %y) {
entry:
%tmp63 = icmp ult i32 %x, %y ; <i1> [#uses=1]
br i1 %tmp63, label %bb.preheader, label %bb8
bb.preheader: ; preds = %entry
br label %bb
bb: ; preds = %bb3, %bb.preheader
%x_addr.0 = phi i32 [ %tmp2, %bb3 ], [ %x, %bb.preheader ] ; <i32> [#uses=1]
%tmp2 = add i32 %x_addr.0, 1 ; <i32> [#uses=3]
br label %bb3
bb3: ; preds = %bb
%tmp6 = icmp ult i32 %tmp2, %y ; <i1> [#uses=1]
br i1 %tmp6, label %bb, label %bb8.loopexit
bb8.loopexit: ; preds = %bb3
br label %bb8
bb8: ; preds = %bb8.loopexit, %entry
%x_addr.1 = phi i32 [ %x, %entry ], [ %tmp2, %bb8.loopexit ] ; <i32> [#uses=1]
br label %return
return: ; preds = %bb8
ret i32 %x_addr.1
}

View File

@@ -0,0 +1,23 @@
; RUN: opt < %s -analyze -scalar-evolution -scalar-evolution-max-iterations=0 | FileCheck %s
; PR1706
; CHECK: backedge-taken count is 13
define i32 @f() {
entry:
br label %bb5
bb: ; preds = %bb5
%tmp2 = shl i32 %j.0, 1 ; <i32> [#uses=1]
%tmp4 = add i32 %i.0, 268435456 ; <i32> [#uses=1]
br label %bb5
bb5: ; preds = %bb, %entry
%j.0 = phi i32 [ 1, %entry ], [ %tmp2, %bb ] ; <i32> [#uses=2]
%i.0 = phi i32 [ -1879048192, %entry ], [ %tmp4, %bb ] ; <i32> [#uses=2]
%tmp7 = icmp slt i32 %i.0, 1610612736 ; <i1> [#uses=1]
br i1 %tmp7, label %bb, label %return
return: ; preds = %bb5
ret i32 %j.0
}

View File

@@ -0,0 +1,26 @@
; RUN: opt < %s -indvars -S | FileCheck %s
; PR1798
; CHECK: printd(i32 1206807378)
declare void @printd(i32)
define i32 @test() {
entry:
br label %bb6
bb: ; preds = %bb6
%tmp3 = add i32 %x.0, %i.0 ; <i32> [#uses=1]
%tmp5 = add i32 %i.0, 1 ; <i32> [#uses=1]
br label %bb6
bb6: ; preds = %bb, %entry
%i.0 = phi i32 [ 0, %entry ], [ %tmp5, %bb ] ; <i32> [#uses=3]
%x.0 = phi i32 [ 0, %entry ], [ %tmp3, %bb ] ; <i32> [#uses=3]
%tmp8 = icmp slt i32 %i.0, 123456789 ; <i1> [#uses=1]
br i1 %tmp8, label %bb, label %bb10
bb10: ; preds = %bb6
call void @printd(i32 %x.0)
ret i32 0
}

View File

@@ -0,0 +1,21 @@
; RUN: opt < %s -analyze -scalar-evolution | FileCheck %s
; PR1810
define void @fun() {
entry:
br label %header
header:
%i = phi i32 [ 1, %entry ], [ %i.next, %body ]
%cond = icmp eq i32 %i, 10
br i1 %cond, label %exit, label %body
body:
%a = mul i32 %i, 5
%b = or i32 %a, 1
%i.next = add i32 %i, 1
br label %header
exit:
ret void
}
; CHECK: --> %b

View File

@@ -0,0 +1,17 @@
; RUN: opt < %s -scalar-evolution -analyze | FileCheck %s
; CHECK: Loop %header: backedge-taken count is (0 smax %n)
define void @foo(i32 %n) {
entry:
br label %header
header:
%i = phi i32 [ 0, %entry ], [ %i.inc, %next ]
%cond = icmp sgt i32 %n, %i
br i1 %cond, label %next, label %return
next:
%i.inc = add i32 %i, 1
br label %header
return:
ret void
}

View File

@@ -0,0 +1,17 @@
; RUN: opt < %s -scalar-evolution -analyze | FileCheck %s
; PR2002
; CHECK: Loop %loop: backedge-taken count is (100 + (-100 smax %n))
define void @foo(i8 %n) {
entry:
br label %loop
loop:
%i = phi i8 [ -100, %entry ], [ %i.inc, %next ]
%cond = icmp slt i8 %i, %n
br i1 %cond, label %next, label %return
next:
%i.inc = add i8 %i, 1
br label %loop
return:
ret void
}

View File

@@ -0,0 +1,19 @@
; RUN: opt < %s -analyze -scalar-evolution | FileCheck %s
; PR2003
; CHECK: umax
define i32 @foo(i32 %n) {
entry:
br label %header
header:
%i = phi i32 [ 100, %entry ], [ %i.inc, %next ]
%cond = icmp ult i32 %i, %n
br i1 %cond, label %next, label %return
next:
%i.inc = add i32 %i, 1
br label %header
return:
ret i32 %i
}

View File

@@ -0,0 +1,23 @@
; RUN: opt < %s -analyze -scalar-evolution -scalar-evolution-max-iterations=0 | FileCheck %s
; PR2364
; CHECK: backedge-taken count is 61
define i32 @func_6() nounwind {
entry:
br label %bb5
bb: ; preds = %bb5
%tmp2 = add i32 %i.0, 1 ; <i32> [#uses=1]
%tmp4 = add i8 %x.0, -4 ; <i8> [#uses=1]
br label %bb5
bb5: ; preds = %bb, %entry
%x.0 = phi i8 [ 0, %entry ], [ %tmp4, %bb ] ; <i8> [#uses=2]
%i.0 = phi i32 [ 0, %entry ], [ %tmp2, %bb ] ; <i32> [#uses=2]
%tmp7 = icmp eq i8 %x.0, 12 ; <i1> [#uses=1]
br i1 %tmp7, label %return, label %bb
return: ; preds = %bb5
ret i32 %i.0
}

View File

@@ -0,0 +1,43 @@
; RUN: opt < %s -analyze -scalar-evolution 2>/dev/null
; PR2433
define i32 @main1(i32 %argc, i8** %argv) nounwind {
entry:
br i1 false, label %bb10, label %bb23
bb10: ; preds = %bb10, %entry
%accum.03 = phi i64 [ %tmp14, %bb10 ], [ 0, %entry ] ; <i64> [#uses=1]
%i.02 = phi i32 [ %tmp16, %bb10 ], [ 0, %entry ] ; <i32> [#uses=1]
%d.1.01 = phi i64 [ %tmp5.i, %bb10 ], [ 0, %entry ] ; <i64> [#uses=1]
%tmp5.i = add i64 %d.1.01, 1 ; <i64> [#uses=2]
%tmp14 = add i64 %accum.03, %tmp5.i ; <i64> [#uses=2]
%tmp16 = add i32 %i.02, 1 ; <i32> [#uses=2]
%tmp20 = icmp slt i32 %tmp16, 0 ; <i1> [#uses=1]
br i1 %tmp20, label %bb10, label %bb23
bb23: ; preds = %bb10, %entry
%accum.0.lcssa = phi i64 [ 0, %entry ], [ %tmp14, %bb10 ] ; <i64> [#uses=0]
ret i32 0
}
define i32 @main2(i32 %argc, i8** %argv) {
entry:
%tmp8 = tail call i32 @atoi( i8* null ) nounwind readonly ; <i32> [#uses=1]
br i1 false, label %bb9, label %bb21
bb9: ; preds = %bb9, %entry
%accum.03 = phi i64 [ %tmp12, %bb9 ], [ 0, %entry ] ; <i64> [#uses=1]
%i.02 = phi i32 [ %tmp14, %bb9 ], [ 0, %entry ] ; <i32> [#uses=1]
%d.1.01 = phi i64 [ %tmp4.i, %bb9 ], [ 0, %entry ] ; <i64> [#uses=1]
%tmp4.i = add i64 %d.1.01, 1 ; <i64> [#uses=2]
%tmp12 = add i64 %accum.03, %tmp4.i ; <i64> [#uses=2]
%tmp14 = add i32 %i.02, 1 ; <i32> [#uses=2]
%tmp18 = icmp slt i32 %tmp14, %tmp8 ; <i1> [#uses=1]
br i1 %tmp18, label %bb9, label %bb21
bb21: ; preds = %bb9, %entry
%accum.0.lcssa = phi i64 [ 0, %entry ], [ %tmp12, %bb9 ] ; <i64> [#uses=0]
ret i32 0
}
declare i32 @atoi(i8*) nounwind readonly

View File

@@ -0,0 +1,39 @@
; RUN: opt < %s -analyze -scalar-evolution 2>&1 | FileCheck %s
; PR2261
; CHECK: Printing analysis 'Scalar Evolution Analysis' for function 'foo'
; CHECK-NOT: smax
@lut = common global [256 x i8] zeroinitializer, align 32 ; <[256 x i8]*> [#uses=1]
define void @foo(i32 %count, i32* %srcptr, i32* %dstptr) nounwind {
entry:
icmp sgt i32 %count, 0 ; <i1>:0 [#uses=1]
br i1 %0, label %bb.nph, label %return
bb.nph: ; preds = %entry
br label %bb
bb: ; preds = %bb1, %bb.nph
%j.01 = phi i32 [ %8, %bb1 ], [ 0, %bb.nph ] ; <i32> [#uses=1]
load i32, i32* %srcptr, align 4 ; <i32>:1 [#uses=2]
and i32 %1, 255 ; <i32>:2 [#uses=1]
and i32 %1, -256 ; <i32>:3 [#uses=1]
getelementptr [256 x i8], [256 x i8]* @lut, i32 0, i32 %2 ; <i8*>:4 [#uses=1]
load i8, i8* %4, align 1 ; <i8>:5 [#uses=1]
zext i8 %5 to i32 ; <i32>:6 [#uses=1]
or i32 %6, %3 ; <i32>:7 [#uses=1]
store i32 %7, i32* %dstptr, align 4
add i32 %j.01, 1 ; <i32>:8 [#uses=2]
br label %bb1
bb1: ; preds = %bb
icmp slt i32 %8, %count ; <i1>:9 [#uses=1]
br i1 %9, label %bb, label %bb1.return_crit_edge
bb1.return_crit_edge: ; preds = %bb1
br label %return
return: ; preds = %bb1.return_crit_edge, %entry
ret void
}

View File

@@ -0,0 +1,33 @@
; RUN: opt < %s -analyze -scalar-evolution 2>&1 | FileCheck %s
; PR2070
; CHECK: Printing analysis 'Scalar Evolution Analysis' for function 'a'
; CHECK-NOT: smax
define i32 @a(i32 %x) nounwind {
entry:
icmp sgt i32 %x, 1 ; <i1>:0 [#uses=1]
br i1 %0, label %bb.nph, label %bb2
bb.nph: ; preds = %entry
br label %bb
bb: ; preds = %bb1, %bb.nph
%z.02 = phi i32 [ %1, %bb1 ], [ 1, %bb.nph ] ; <i32> [#uses=1]
%i.01 = phi i32 [ %2, %bb1 ], [ 1, %bb.nph ] ; <i32> [#uses=2]
mul i32 %z.02, %i.01 ; <i32>:1 [#uses=2]
add i32 %i.01, 1 ; <i32>:2 [#uses=2]
br label %bb1
bb1: ; preds = %bb
icmp slt i32 %2, %x ; <i1>:3 [#uses=1]
br i1 %3, label %bb, label %bb1.bb2_crit_edge
bb1.bb2_crit_edge: ; preds = %bb1
%.lcssa = phi i32 [ %1, %bb1 ] ; <i32> [#uses=1]
br label %bb2
bb2: ; preds = %bb1.bb2_crit_edge, %entry
%z.0.lcssa = phi i32 [ %.lcssa, %bb1.bb2_crit_edge ], [ 1, %entry ] ; <i32> [#uses=1]
ret i32 %z.0.lcssa
}

View File

@@ -0,0 +1,16 @@
; RUN: opt < %s -analyze -scalar-evolution -scalar-evolution-max-iterations=0 | FileCheck %s
; PR2088
; CHECK: Unpredictable
define void @fun() {
entry:
br label %loop
loop:
%i = phi i8 [ 0, %entry ], [ %i.next, %loop ]
%i.next = add i8 %i, 4
%cond = icmp ne i8 %i.next, 6
br i1 %cond, label %loop, label %exit
exit:
ret void
}

View File

@@ -0,0 +1,16 @@
; RUN: opt < %s -analyze -scalar-evolution -scalar-evolution-max-iterations=0 | FileCheck %s
; PR2088
; CHECK: backedge-taken count is 113
define void @fun() {
entry:
br label %loop
loop:
%i = phi i8 [ 0, %entry ], [ %i.next, %loop ]
%i.next = add i8 %i, 18
%cond = icmp ne i8 %i.next, 4
br i1 %cond, label %loop, label %exit
exit:
ret void
}

View File

@@ -0,0 +1,28 @@
; RUN: opt < %s -analyze -scalar-evolution \
; RUN: -scalar-evolution-max-iterations=0 | FileCheck %s
; PR2607
define i32 @_Z1aj(i32 %j) nounwind {
entry:
icmp sgt i32 0, %j ; <i1>:0 [#uses=1]
br i1 %0, label %bb.preheader, label %return
bb.preheader: ; preds = %entry
br label %bb
bb: ; preds = %bb, %bb.preheader
%i.01 = phi i32 [ %1, %bb ], [ 0, %bb.preheader ] ; <i32> [#uses=1]
add i32 %i.01, -1 ; <i32>:1 [#uses=3]
icmp sgt i32 %1, %j ; <i1>:2 [#uses=1]
br i1 %2, label %bb, label %return.loopexit
return.loopexit: ; preds = %bb
br label %return
return: ; preds = %return.loopexit, %entry
%i.0.lcssa = phi i32 [ 0, %entry ], [ %1, %return.loopexit ] ; <i32> [#uses=1]
ret i32 %i.0.lcssa
}
; CHECK: backedge-taken count is (-1 + (-1 * %j))

View File

@@ -0,0 +1,26 @@
; RUN: opt < %s -analyze -scalar-evolution \
; RUN: -scalar-evolution-max-iterations=0 | FileCheck %s
; PR2607
define i32 @b(i32 %x, i32 %y) nounwind {
entry:
%cmp2 = icmp slt i32 %y, %x
%cond3 = select i1 %cmp2, i32 %y, i32 %x
%cmp54 = icmp slt i32 %cond3, -2147483632
br i1 %cmp54, label %forinc, label %afterfor
forinc: ; preds = %forinc, %entry
%j.01 = phi i32 [ %dec, %forinc ], [ -2147483632, %entry ]
%dec = add i32 %j.01, -1
%cmp = icmp slt i32 %y, %x
%cond = select i1 %cmp, i32 %y, i32 %x
%cmp5 = icmp sgt i32 %dec, %cond
br i1 %cmp5, label %forinc, label %afterfor
afterfor: ; preds = %forinc, %entry
%j.0.lcssa = phi i32 [ -2147483632, %entry ], [ %dec, %forinc ]
ret i32 %j.0.lcssa
}
; CHECK: backedge-taken count is (-2147483632 + ((-1 + (-1 * %{{[xy]}})) smax (-1 + (-1 * %{{[xy]}}))))

View File

@@ -0,0 +1,27 @@
; RUN: opt < %s -analyze -scalar-evolution \
; RUN: -scalar-evolution-max-iterations=0 | FileCheck %s
; PR2621
define i32 @a() nounwind {
entry:
br label %bb1
bb:
trunc i32 %i.0 to i16
add i16 %0, %x16.0
add i32 %i.0, 1
br label %bb1
bb1:
%i.0 = phi i32 [ 0, %entry ], [ %2, %bb ]
%x16.0 = phi i16 [ 0, %entry ], [ %1, %bb ]
icmp ult i32 %i.0, 888888
br i1 %3, label %bb, label %bb2
bb2:
zext i16 %x16.0 to i32
ret i32 %4
}
; CHECK: Exits: 20028

View File

@@ -0,0 +1,58 @@
; RUN: opt < %s -analyze -scalar-evolution \
; RUN: -scalar-evolution-max-iterations=0 | FileCheck %s
; PR2621
define i32 @a() nounwind {
entry:
br label %bb1
bb: ; preds = %bb1
add i16 %x17.0, 1 ; <i16>:0 [#uses=2]
add i16 %0, %x16.0 ; <i16>:1 [#uses=2]
add i16 %1, %x15.0 ; <i16>:2 [#uses=2]
add i16 %2, %x14.0 ; <i16>:3 [#uses=2]
add i16 %3, %x13.0 ; <i16>:4 [#uses=2]
add i16 %4, %x12.0 ; <i16>:5 [#uses=2]
add i16 %5, %x11.0 ; <i16>:6 [#uses=2]
add i16 %6, %x10.0 ; <i16>:7 [#uses=2]
add i16 %7, %x9.0 ; <i16>:8 [#uses=2]
add i16 %8, %x8.0 ; <i16>:9 [#uses=2]
add i16 %9, %x7.0 ; <i16>:10 [#uses=2]
add i16 %10, %x6.0 ; <i16>:11 [#uses=2]
add i16 %11, %x5.0 ; <i16>:12 [#uses=2]
add i16 %12, %x4.0 ; <i16>:13 [#uses=2]
add i16 %13, %x3.0 ; <i16>:14 [#uses=2]
add i16 %14, %x2.0 ; <i16>:15 [#uses=2]
add i16 %15, %x1.0 ; <i16>:16 [#uses=1]
add i32 %i.0, 1 ; <i32>:17 [#uses=1]
br label %bb1
bb1: ; preds = %bb, %entry
%x2.0 = phi i16 [ 0, %entry ], [ %15, %bb ] ; <i16> [#uses=1]
%x3.0 = phi i16 [ 0, %entry ], [ %14, %bb ] ; <i16> [#uses=1]
%x4.0 = phi i16 [ 0, %entry ], [ %13, %bb ] ; <i16> [#uses=1]
%x5.0 = phi i16 [ 0, %entry ], [ %12, %bb ] ; <i16> [#uses=1]
%x6.0 = phi i16 [ 0, %entry ], [ %11, %bb ] ; <i16> [#uses=1]
%x7.0 = phi i16 [ 0, %entry ], [ %10, %bb ] ; <i16> [#uses=1]
%x8.0 = phi i16 [ 0, %entry ], [ %9, %bb ] ; <i16> [#uses=1]
%x9.0 = phi i16 [ 0, %entry ], [ %8, %bb ] ; <i16> [#uses=1]
%x10.0 = phi i16 [ 0, %entry ], [ %7, %bb ] ; <i16> [#uses=1]
%x11.0 = phi i16 [ 0, %entry ], [ %6, %bb ] ; <i16> [#uses=1]
%x12.0 = phi i16 [ 0, %entry ], [ %5, %bb ] ; <i16> [#uses=1]
%x13.0 = phi i16 [ 0, %entry ], [ %4, %bb ] ; <i16> [#uses=1]
%x14.0 = phi i16 [ 0, %entry ], [ %3, %bb ] ; <i16> [#uses=1]
%x15.0 = phi i16 [ 0, %entry ], [ %2, %bb ] ; <i16> [#uses=1]
%x16.0 = phi i16 [ 0, %entry ], [ %1, %bb ] ; <i16> [#uses=1]
%x17.0 = phi i16 [ 0, %entry ], [ %0, %bb ] ; <i16> [#uses=1]
%i.0 = phi i32 [ 0, %entry ], [ %17, %bb ] ; <i32> [#uses=2]
%x1.0 = phi i16 [ 0, %entry ], [ %16, %bb ] ; <i16> [#uses=2]
icmp ult i32 %i.0, 8888 ; <i1>:18 [#uses=1]
br i1 %18, label %bb, label %bb2
bb2: ; preds = %bb1
zext i16 %x1.0 to i32 ; <i32>:19 [#uses=1]
ret i32 %19
}
; CHECK: Exits: -19168

View File

@@ -0,0 +1,21 @@
; RUN: opt < %s -analyze -scalar-evolution
; PR1827
declare void @use(i32)
define void @foo() {
entry:
br label %loop_1
loop_1: ; preds = %loop_1, %entry
%a = phi i32 [ 2, %entry ], [ %b, %loop_1 ] ; <i32> [#uses=2]
%c = phi i32 [ 5, %entry ], [ %d, %loop_1 ] ; <i32> [#uses=1]
%b = add i32 %a, 1 ; <i32> [#uses=1]
%d = add i32 %c, %a ; <i32> [#uses=3]
%A = icmp ult i32 %d, 50 ; <i1> [#uses=1]
br i1 %A, label %loop_1, label %endloop
endloop: ; preds = %loop_1
call void @use(i32 %d)
ret void
}

Some files were not shown because too many files have changed in this diff Show More