Imported Upstream version 5.18.0.167

Former-commit-id: 289509151e0fee68a1b591a20c9f109c3c789d3a
This commit is contained in:
Xamarin Public Jenkins (auto-signing)
2018-10-20 08:25:10 +00:00
parent e19d552987
commit b084638f15
28489 changed files with 184 additions and 3866856 deletions

View File

@ -1,13 +0,0 @@
; Call graph construction crash: Not handling indirect calls right
;
; RUN: opt < %s -analyze -print-callgraph > /dev/null 2>&1
;
%FunTy = type i32 (i32)
define void @invoke(%FunTy* %x) {
%foo = call i32 %x( i32 123 ) ; <i32> [#uses=0]
ret void
}

View File

@ -1,23 +0,0 @@
; Inlining used to break PHI nodes. This tests that they are correctly updated
; when a node is split around the call instruction. The verifier caught the error.
;
; RUN: opt < %s -inline
;
define i64 @test(i64 %X) {
ret i64 %X
}
define i64 @fib(i64 %n) {
; <label>:0
%T = icmp ult i64 %n, 2 ; <i1> [#uses=1]
br i1 %T, label %BaseCase, label %RecurseCase
RecurseCase: ; preds = %0
%result = call i64 @test( i64 %n ) ; <i64> [#uses=0]
br label %BaseCase
BaseCase: ; preds = %RecurseCase, %0
%X = phi i64 [ 1, %0 ], [ 2, %RecurseCase ] ; <i64> [#uses=1]
ret i64 %X
}

View File

@ -1,24 +0,0 @@
; When constant propogating terminator instructions, the basic block iterator
; was not updated to refer to the final position of the new terminator. This
; can be bad, f.e. because constproping a terminator can lead to the
; destruction of PHI nodes, which invalidates the iterator!
;
; Fixed by adding new arguments to ConstantFoldTerminator
;
; RUN: opt < %s -constprop
define void @build_tree(i32 %ml) {
; <label>:0
br label %bb2
bb2: ; preds = %bb2, %0
%reg137 = phi i32 [ %reg140, %bb2 ], [ 12, %0 ] ; <i32> [#uses=1]
%reg138 = phi i32 [ %reg139, %bb2 ], [ 0, %0 ] ; <i32> [#uses=1]
%reg139 = add i32 %reg138, 1 ; <i32> [#uses=1]
%reg140 = add i32 %reg137, -1 ; <i32> [#uses=1]
br i1 false, label %bb2, label %bb3
bb3: ; preds = %bb2
ret void
}

View File

@ -1,29 +0,0 @@
; LoopInfo is incorrectly calculating loop nesting! In this case it doesn't
; figure out that loop "Inner" should be nested inside of leep "LoopHeader",
; and instead nests it just inside loop "Top"
;
; RUN: opt < %s -analyze -loops | \
; RUN: grep " Loop at depth 3 containing: %Inner<header><latch><exiting>"
;
define void @test() {
br label %Top
Top: ; preds = %Out, %0
br label %LoopHeader
Next: ; preds = %LoopHeader
br i1 false, label %Inner, label %Out
Inner: ; preds = %Inner, %Next
br i1 false, label %Inner, label %LoopHeader
LoopHeader: ; preds = %Inner, %Top
br label %Next
Out: ; preds = %Next
br i1 false, label %Top, label %Done
Done: ; preds = %Out
ret void
}

View File

@ -1,8 +0,0 @@
; RUN: llvm-as < %s | llvm-dis
@bar = external global <2 x i32> ; <<2 x i32>*> [#uses=1]
define void @main() {
store <2 x i32> < i32 0, i32 1 >, <2 x i32>* @bar
ret void
}

View File

@ -1,11 +0,0 @@
; RUN: llvm-as < %s | llvm-dis
@foo = global <2 x i32> < i32 0, i32 1 > ; <<2 x i32>*> [#uses=1]
@bar = external global <2 x i32> ; <<2 x i32>*> [#uses=1]
define void @main() {
%t0 = load <2 x i32>, <2 x i32>* @foo ; <<2 x i32>> [#uses=1]
store <2 x i32> %t0, <2 x i32>* @bar
ret void
}

View File

@ -1,13 +0,0 @@
; RUN: llvm-as < %s | llvm-dis
@foo = external global <4 x float> ; <<4 x float>*> [#uses=1]
@bar = external global <4 x float> ; <<4 x float>*> [#uses=1]
define void @main() {
%t0 = load <4 x float>, <4 x float>* @foo ; <<4 x float>> [#uses=3]
%t1 = fadd <4 x float> %t0, %t0 ; <<4 x float>> [#uses=1]
%t2 = select i1 true, <4 x float> %t0, <4 x float> %t1 ; <<4 x float>> [#uses=1]
store <4 x float> %t2, <4 x float>* @bar
ret void
}

View File

@ -1,13 +0,0 @@
; RUN: llvm-as < %s | llvm-dis
@foo = external global <4 x float> ; <<4 x float>*> [#uses=1]
@bar = external global <4 x float> ; <<4 x float>*> [#uses=1]
define void @main() {
%t0 = load <4 x float>, <4 x float>* @foo ; <<4 x float>> [#uses=3]
%t2 = fadd <4 x float> %t0, %t0 ; <<4 x float>> [#uses=1]
%t3 = select i1 false, <4 x float> %t0, <4 x float> %t2 ; <<4 x float>> [#uses=1]
store <4 x float> %t3, <4 x float>* @bar
ret void
}

View File

@ -1,22 +0,0 @@
; RUN: llvm-as < %s | llvm-dis | llvm-as > /dev/null
%v4f = type <4 x float>
@foo = external global %v4f ; <%v4f*> [#uses=1]
@bar = external global %v4f ; <%v4f*> [#uses=1]
define void @main() {
br label %A
C: ; preds = %B
store %v4f %t2, %v4f* @bar
ret void
B: ; preds = %A
%t2 = fadd %v4f %t0, %t0 ; <%v4f> [#uses=1]
br label %C
A: ; preds = %0
%t0 = load %v4f, %v4f* @foo ; <%v4f> [#uses=2]
br label %B
}

View File

@ -1,5 +0,0 @@
; RUN: opt < %s -domtree -gvn -domtree -constmerge -disable-output
define i32 @test1() {
unreachable
}

View File

@ -1,309 +0,0 @@
;RUN: opt < %s -codegenprepare -disable-output
define void @foo() {
entry:
br i1 false, label %cond_next31, label %cond_true
cond_true: ; preds = %entry
br i1 false, label %cond_true19, label %cond_next31
cond_true19: ; preds = %cond_true
br i1 false, label %bb510, label %cond_next31
cond_next31: ; preds = %cond_true19, %cond_true, %entry
br i1 false, label %cond_true61, label %cond_next78
cond_true61: ; preds = %cond_next31
br label %cond_next78
cond_next78: ; preds = %cond_true61, %cond_next31
br i1 false, label %cond_true93, label %bb.preheader
cond_true93: ; preds = %cond_next78
br label %bb.preheader
bb.preheader: ; preds = %cond_true93, %cond_next78
%iftmp.11.0.ph.ph = phi i16 [ 0, %cond_true93 ], [ 0, %cond_next78 ] ; <i16> [#uses=1]
br label %bb
bb: ; preds = %cond_next499, %bb.preheader
%n.1 = phi i16 [ %iftmp.11.0.ph.ph, %cond_next499 ], [ 0, %bb.preheader ] ; <i16> [#uses=0]
br i1 false, label %bb148.preheader, label %bb493
bb148.preheader: ; preds = %bb
br label %bb148
bb148: ; preds = %cond_next475, %bb148.preheader
br i1 false, label %cond_next175, label %bb184
cond_next175: ; preds = %bb148
br i1 false, label %bb184, label %bb185
bb184: ; preds = %cond_next175, %bb148
br label %bb185
bb185: ; preds = %bb184, %cond_next175
br i1 false, label %bb420.preheader, label %cond_true198
bb420.preheader: ; preds = %bb185
br label %bb420
cond_true198: ; preds = %bb185
br i1 false, label %bb294, label %cond_next208
cond_next208: ; preds = %cond_true198
br i1 false, label %cond_next249, label %cond_true214
cond_true214: ; preds = %cond_next208
br i1 false, label %bb294, label %cond_next262
cond_next249: ; preds = %cond_next208
br i1 false, label %bb294, label %cond_next262
cond_next262: ; preds = %cond_next249, %cond_true214
br label %bb269
bb269: ; preds = %cond_next285, %cond_next262
br i1 false, label %cond_next285, label %cond_true279
cond_true279: ; preds = %bb269
br label %cond_next285
cond_next285: ; preds = %cond_true279, %bb269
br i1 false, label %bb269, label %cond_next446.loopexit
bb294: ; preds = %cond_next249, %cond_true214, %cond_true198
br i1 false, label %cond_next336, label %cond_true301
cond_true301: ; preds = %bb294
br i1 false, label %cond_false398, label %cond_true344
cond_next336: ; preds = %bb294
br i1 false, label %cond_false398, label %cond_true344
cond_true344: ; preds = %cond_next336, %cond_true301
br i1 false, label %cond_false381, label %cond_true351
cond_true351: ; preds = %cond_true344
br label %cond_next387
cond_false381: ; preds = %cond_true344
br label %cond_next387
cond_next387: ; preds = %cond_false381, %cond_true351
br label %cond_next401
cond_false398: ; preds = %cond_next336, %cond_true301
br label %cond_next401
cond_next401: ; preds = %cond_false398, %cond_next387
br i1 false, label %cond_next475, label %cond_true453
bb420: ; preds = %cond_next434, %bb420.preheader
br i1 false, label %cond_next434, label %cond_true428
cond_true428: ; preds = %bb420
br label %cond_next434
cond_next434: ; preds = %cond_true428, %bb420
br i1 false, label %bb420, label %cond_next446.loopexit1
cond_next446.loopexit: ; preds = %cond_next285
br label %cond_next446
cond_next446.loopexit1: ; preds = %cond_next434
br label %cond_next446
cond_next446: ; preds = %cond_next446.loopexit1, %cond_next446.loopexit
br i1 false, label %cond_next475, label %cond_true453
cond_true453: ; preds = %cond_next446, %cond_next401
br i1 false, label %cond_true458, label %cond_next475
cond_true458: ; preds = %cond_true453
br label %cond_next475
cond_next475: ; preds = %cond_true458, %cond_true453, %cond_next446, %cond_next401
br i1 false, label %bb493.loopexit, label %bb148
bb493.loopexit: ; preds = %cond_next475
br label %bb493
bb493: ; preds = %bb493.loopexit, %bb
br i1 false, label %cond_next499, label %bb510.loopexit
cond_next499: ; preds = %bb493
br label %bb
bb510.loopexit: ; preds = %bb493
br label %bb510
bb510: ; preds = %bb510.loopexit, %cond_true19
br i1 false, label %cond_next524, label %cond_true517
cond_true517: ; preds = %bb510
br label %cond_next524
cond_next524: ; preds = %cond_true517, %bb510
br i1 false, label %cond_next540, label %cond_true533
cond_true533: ; preds = %cond_next524
br label %cond_next540
cond_next540: ; preds = %cond_true533, %cond_next524
br i1 false, label %cond_true554, label %cond_next560
cond_true554: ; preds = %cond_next540
br label %cond_next560
cond_next560: ; preds = %cond_true554, %cond_next540
br i1 false, label %cond_true566, label %cond_next572
cond_true566: ; preds = %cond_next560
br label %cond_next572
cond_next572: ; preds = %cond_true566, %cond_next560
br i1 false, label %bb608.preheader, label %bb791.preheader
bb608.preheader: ; preds = %cond_next797.us, %cond_next572
br label %bb608
bb608: ; preds = %cond_next771, %bb608.preheader
br i1 false, label %cond_false627, label %cond_true613
cond_true613: ; preds = %bb608
br label %cond_next640
cond_false627: ; preds = %bb608
br label %cond_next640
cond_next640: ; preds = %cond_false627, %cond_true613
br i1 false, label %cond_true653, label %cond_next671
cond_true653: ; preds = %cond_next640
br label %cond_next671
cond_next671: ; preds = %cond_true653, %cond_next640
br i1 false, label %cond_true683, label %cond_next724
cond_true683: ; preds = %cond_next671
br i1 false, label %cond_next724, label %L1
cond_next724: ; preds = %cond_true683, %cond_next671
br i1 false, label %cond_true735, label %L1
cond_true735: ; preds = %cond_next724
br label %L1
L1: ; preds = %cond_true735, %cond_next724, %cond_true683
br i1 false, label %cond_true745, label %cond_next771
cond_true745: ; preds = %L1
br label %cond_next771
cond_next771: ; preds = %cond_true745, %L1
br i1 false, label %bb608, label %bb791.preheader.loopexit
bb791.preheader.loopexit: ; preds = %cond_next771
br label %bb791.preheader
bb791.preheader: ; preds = %bb791.preheader.loopexit, %cond_next572
br i1 false, label %cond_next797.us, label %bb809.split
cond_next797.us: ; preds = %bb791.preheader
br label %bb608.preheader
bb809.split: ; preds = %bb791.preheader
br i1 false, label %cond_next827, label %cond_true820
cond_true820: ; preds = %bb809.split
br label %cond_next827
cond_next827: ; preds = %cond_true820, %bb809.split
br i1 false, label %cond_true833, label %cond_next840
cond_true833: ; preds = %cond_next827
br label %cond_next840
cond_next840: ; preds = %cond_true833, %cond_next827
br i1 false, label %bb866, label %bb1245
bb866: ; preds = %bb1239, %cond_next840
br i1 false, label %cond_true875, label %bb911
cond_true875: ; preds = %bb866
br label %cond_next1180
bb911: ; preds = %bb866
switch i32 0, label %bb1165 [
i32 0, label %bb915
i32 1, label %bb932
i32 2, label %bb941
i32 3, label %bb1029
i32 4, label %bb1036
i32 5, label %bb1069
i32 6, label %L3
]
bb915: ; preds = %cond_next1171, %bb911
br i1 false, label %cond_next1171, label %cond_next1180
bb932: ; preds = %cond_next1171, %bb911
br label %L1970
bb941: ; preds = %cond_next1171, %bb911
br label %L1970
L1970: ; preds = %bb941, %bb932
br label %bb1165
bb1029: ; preds = %cond_next1171, %bb911
br label %L4
bb1036: ; preds = %cond_next1171, %bb911
br label %L4
bb1069: ; preds = %cond_next1171, %bb911
br i1 false, label %cond_next1121, label %cond_true1108
L3: ; preds = %cond_next1171, %bb911
br i1 false, label %cond_next1121, label %cond_true1108
cond_true1108: ; preds = %L3, %bb1069
br label %L4
cond_next1121: ; preds = %L3, %bb1069
br label %L4
L4: ; preds = %cond_next1121, %cond_true1108, %bb1036, %bb1029
br label %bb1165
bb1165: ; preds = %cond_next1171, %L4, %L1970, %bb911
br i1 false, label %cond_next1171, label %cond_next1180
cond_next1171: ; preds = %bb1165, %bb915
switch i32 0, label %bb1165 [
i32 0, label %bb915
i32 1, label %bb932
i32 2, label %bb941
i32 3, label %bb1029
i32 4, label %bb1036
i32 5, label %bb1069
i32 6, label %L3
]
cond_next1180: ; preds = %bb1165, %bb915, %cond_true875
br label %bb1239
bb1239: ; preds = %cond_next1251, %cond_next1180
br i1 false, label %bb866, label %bb1245
bb1245: ; preds = %bb1239, %cond_next840
br i1 false, label %cond_next1251, label %bb1257
cond_next1251: ; preds = %bb1245
br label %bb1239
bb1257: ; preds = %bb1245
ret void
}

View File

@ -1,12 +0,0 @@
;RUN: opt < %s -analyze -dot-cfg-only 2>/dev/null
;RUN: opt < %s -analyze -passes=dot-cfg-only 2>/dev/null
;PR 1497
define void @foo() {
entry:
br label %return
return: ; preds = %entry
ret void
}

View File

@ -1,7 +0,0 @@
; RUN: opt < %s -analyze -inline
; PR1526
; RUN: opt < %s -analyze -indvars
; PR1539
define i32 @test1() {
ret i32 0
}

View File

@ -1,32 +0,0 @@
; RUN: opt < %s -loop-unswitch -indvars -disable-output
; Require SCEV before LCSSA.
define void @foo() {
entry:
%i = alloca i32, align 4 ; <i32*> [#uses=5]
%"alloca point" = bitcast i32 0 to i32 ; <i32> [#uses=0]
store i32 0, i32* %i, align 4
br label %bb3
bb: ; preds = %bb3
%tmp = load i32, i32* %i, align 4 ; <i32> [#uses=1]
call void @bar( i32 %tmp )
%tmp1 = load i32, i32* %i, align 4 ; <i32> [#uses=1]
%tmp2 = add i32 %tmp1, 1 ; <i32> [#uses=1]
store i32 %tmp2, i32* %i, align 4
br label %bb3
bb3: ; preds = %bb, %entry
%tmp4 = load i32, i32* %i, align 4 ; <i32> [#uses=1]
%tmp5 = icmp sle i32 %tmp4, 9 ; <i1> [#uses=1]
%tmp56 = zext i1 %tmp5 to i8 ; <i8> [#uses=1]
%toBool = icmp ne i8 %tmp56, 0 ; <i1> [#uses=1]
br i1 %toBool, label %bb, label %bb7
bb7: ; preds = %bb3
br label %return
return: ; preds = %bb7
ret void
}
declare void @bar(i32)

View File

@ -1,5 +0,0 @@
; RUN: opt < %s -loop-unroll -loop-rotate -simplifycfg -disable-output
; PR2028
define i32 @test1() {
ret i32 0
}

View File

@ -1,14 +0,0 @@
; RUN: opt < %s -instcombine -S | grep true
target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128"
target triple = "x86_64-unknown-linux-gnu"
%packed = type <{ x86_fp80, i8 }>
%unpacked = type { x86_fp80, i8 }
define i1 @q() nounwind {
entry:
%char_p = getelementptr %packed, %packed* null, i32 0, i32 1 ; <i8*> [#uses=1]
%char_u = getelementptr %unpacked, %unpacked* null, i32 0, i32 1 ; <i8*> [#uses=1]
%res = icmp eq i8* %char_p, %char_u ; <i1> [#uses=1]
ret i1 %res
}

View File

@ -1,11 +0,0 @@
; RUN: opt < %s -inline -internalize -disable-output
define void @foo() nounwind {
ret void
}
define void @main(...) nounwind {
call void @foo()
ret void
}

View File

@ -1,16 +0,0 @@
; RUN: llvm-as < %s | llvm-dis | FileCheck %s
; PR2894
declare void @g()
define void @f() personality i32 (...)* @__gxx_personality_v0 {
; CHECK: invoke void @g()
; CHECK: to label %d unwind label %c
invoke void @g() to label %d unwind label %c
d:
ret void
c:
%exn = landingpad {i8*, i32}
cleanup
ret void
}
declare i32 @__gxx_personality_v0(...)

View File

@ -1,36 +0,0 @@
; RUN: opt < %s -inline -prune-eh -disable-output
define void @f2() personality i32 (...)* @__gxx_personality_v0 {
invoke void @f6()
to label %ok1 unwind label %lpad1
ok1:
ret void
lpad1:
landingpad {i8*, i32}
cleanup
invoke void @f4()
to label %ok2 unwind label %lpad2
ok2:
call void @f8()
unreachable
lpad2:
%exn = landingpad {i8*, i32}
cleanup
unreachable
}
declare void @f3()
define void @f4() {
call void @f3()
ret void
}
declare void @f6() nounwind
declare void @f8()
declare i32 @__gxx_personality_v0(...)

View File

@ -1,4 +0,0 @@
; RUN: opt < %s -verify -S | grep noimplicitfloat
declare void @f() noimplicitfloat

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