summaryrefslogtreecommitdiffstats
path: root/llvm/test/Transforms/Util
diff options
context:
space:
mode:
authorEric Christopher <echristo@gmail.com>2019-04-17 02:12:23 +0000
committerEric Christopher <echristo@gmail.com>2019-04-17 02:12:23 +0000
commita86343512845c9c1fdbac865fea88aa5fce7142a (patch)
tree666fc6353de19ad8b00e56b67edd33f24104e4a7 /llvm/test/Transforms/Util
parent7f8ca6e3679b3af951cb7a4b1377edfaa3244b93 (diff)
downloadbcm5719-llvm-a86343512845c9c1fdbac865fea88aa5fce7142a.tar.gz
bcm5719-llvm-a86343512845c9c1fdbac865fea88aa5fce7142a.zip
Temporarily Revert "Add basic loop fusion pass."
As it's causing some bot failures (and per request from kbarton). This reverts commit r358543/ab70da07286e618016e78247e4a24fcb84077fda. llvm-svn: 358546
Diffstat (limited to 'llvm/test/Transforms/Util')
-rw-r--r--llvm/test/Transforms/Util/PR37334-break-crit-edges-require-dt.ll44
-rw-r--r--llvm/test/Transforms/Util/PredicateInfo/condprop.ll471
-rw-r--r--llvm/test/Transforms/Util/PredicateInfo/diamond.ll68
-rw-r--r--llvm/test/Transforms/Util/PredicateInfo/edge.ll242
-rw-r--r--llvm/test/Transforms/Util/PredicateInfo/ordering.ll79
-rw-r--r--llvm/test/Transforms/Util/PredicateInfo/pr33456.ll68
-rw-r--r--llvm/test/Transforms/Util/PredicateInfo/pr33457.ll93
-rw-r--r--llvm/test/Transforms/Util/PredicateInfo/testandor.ll211
-rw-r--r--llvm/test/Transforms/Util/PredicateInfo/unnamed-types.ll36
-rw-r--r--llvm/test/Transforms/Util/call-promotion-utils-ptrcast-attribute.ll32
-rw-r--r--llvm/test/Transforms/Util/call-promotion-utils-ptrcast.ll50
-rw-r--r--llvm/test/Transforms/Util/clone-dicompileunit.ll66
-rw-r--r--llvm/test/Transforms/Util/combine-alias-scope-metadata.ll24
-rw-r--r--llvm/test/Transforms/Util/dbg-user-of-aext.ll87
-rw-r--r--llvm/test/Transforms/Util/flattencfg.ll26
-rw-r--r--llvm/test/Transforms/Util/libcalls-fast-math-inf-loop.ll60
-rw-r--r--llvm/test/Transforms/Util/libcalls-opt-remarks.ll57
-rw-r--r--llvm/test/Transforms/Util/libcalls-shrinkwrap-double.ll241
-rw-r--r--llvm/test/Transforms/Util/libcalls-shrinkwrap-float.ll191
-rw-r--r--llvm/test/Transforms/Util/libcalls-shrinkwrap-long-double.ll192
-rw-r--r--llvm/test/Transforms/Util/lowerinvoke-funclet.ll39
-rw-r--r--llvm/test/Transforms/Util/lowerswitch.ll302
-rw-r--r--llvm/test/Transforms/Util/simplify-dbg-declare-load.ll61
-rw-r--r--llvm/test/Transforms/Util/store-first-op.ll37
-rw-r--r--llvm/test/Transforms/Util/strip-gc-relocates.ll120
-rw-r--r--llvm/test/Transforms/Util/strip-nonlinetable-debuginfo-containingtypes.ll94
-rw-r--r--llvm/test/Transforms/Util/strip-nonlinetable-debuginfo-cus.ll24
-rw-r--r--llvm/test/Transforms/Util/strip-nonlinetable-debuginfo-localvars.ll36
-rw-r--r--llvm/test/Transforms/Util/strip-nonlinetable-debuginfo-loops.ll71
-rw-r--r--llvm/test/Transforms/Util/strip-nonlinetable-debuginfo-subroutinetypes.ll22
30 files changed, 0 insertions, 3144 deletions
diff --git a/llvm/test/Transforms/Util/PR37334-break-crit-edges-require-dt.ll b/llvm/test/Transforms/Util/PR37334-break-crit-edges-require-dt.ll
deleted file mode 100644
index 866ff93be7e..00000000000
--- a/llvm/test/Transforms/Util/PR37334-break-crit-edges-require-dt.ll
+++ /dev/null
@@ -1,44 +0,0 @@
-; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
-; RUN: opt < %s -loop-sink -break-crit-edges -branch-prob -S | FileCheck %s
-; RUN: opt < %s -loop-sink -break-crit-edges -lazy-block-freq -S | FileCheck %s
-; RUN: opt < %s -loop-sink -break-crit-edges -lazy-branch-prob -S | FileCheck %s
-
-; BreakCriticalEdges tries to update LI and DT if they are present. However,
-; updating LI actually needs a DT, so we now require DT in
-; BranchProbabilityInfo/LazyBlockFrequencyInfo/LazyBranchProbabilityInfo so it
-; is indeed available when LI is.
-
-target triple = "x86_64-unknown-linux-gnu"
-
-define void @f1() {
-; CHECK-LABEL: @f1(
-; CHECK-NEXT: entry:
-; CHECK-NEXT: br label [[FOR_COND:%.*]]
-; CHECK: for.cond:
-; CHECK-NEXT: br i1 false, label [[FOR_BODY:%.*]], label [[FOR_COND_FOR_END_CRIT_EDGE:%.*]]
-; CHECK: for.cond.for.end_crit_edge:
-; CHECK-NEXT: br label [[FOR_END:%.*]]
-; CHECK: for.body:
-; CHECK-NEXT: br i1 true, label [[FOR_ENDSPLIT:%.*]], label [[FOR_INC:%.*]]
-; CHECK: for.inc:
-; CHECK-NEXT: br label [[FOR_COND]]
-; CHECK: for.endsplit:
-; CHECK-NEXT: br label [[FOR_END]]
-; CHECK: for.end:
-; CHECK-NEXT: ret void
-;
-entry:
- br label %for.cond
-
-for.cond: ; preds = %for.inc, %entry
- br i1 undef, label %for.body, label %for.end
-
-for.body: ; preds = %for.cond
- br i1 undef, label %for.end, label %for.inc
-
-for.inc: ; preds = %for.body
- br label %for.cond
-
-for.end: ; preds = %for.body, %for.cond
- ret void
-}
diff --git a/llvm/test/Transforms/Util/PredicateInfo/condprop.ll b/llvm/test/Transforms/Util/PredicateInfo/condprop.ll
deleted file mode 100644
index 0cd6ef34e1a..00000000000
--- a/llvm/test/Transforms/Util/PredicateInfo/condprop.ll
+++ /dev/null
@@ -1,471 +0,0 @@
-; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
-; RUN: opt -print-predicateinfo -analyze < %s 2>&1 | FileCheck %s
-
-@a = external global i32 ; <i32*> [#uses=7]
-
-define i32 @test1() nounwind {
-; CHECK-LABEL: @test1(
-; CHECK-NEXT: entry:
-; CHECK-NEXT: [[TMP0:%.*]] = load i32, i32* @a, align 4
-; CHECK-NEXT: [[TMP1:%.*]] = icmp eq i32 [[TMP0]], 4
-; CHECK-NEXT: br i1 [[TMP1]], label [[BB:%.*]], label [[BB1:%.*]]
-; CHECK: bb:
-; CHECK-NEXT: br label [[BB8:%.*]]
-; CHECK: bb1:
-; CHECK-NEXT: [[TMP2:%.*]] = load i32, i32* @a, align 4
-; CHECK-NEXT: [[TMP3:%.*]] = icmp eq i32 [[TMP2]], 5
-; CHECK-NEXT: br i1 [[TMP3]], label [[BB2:%.*]], label [[BB3:%.*]]
-; CHECK: bb2:
-; CHECK-NEXT: br label [[BB8]]
-; CHECK: bb3:
-; CHECK-NEXT: [[TMP4:%.*]] = load i32, i32* @a, align 4
-; CHECK-NEXT: [[TMP5:%.*]] = icmp eq i32 [[TMP4]], 4
-; CHECK-NEXT: br i1 [[TMP5]], label [[BB4:%.*]], label [[BB5:%.*]]
-; CHECK: bb4:
-; CHECK-NEXT: [[TMP6:%.*]] = load i32, i32* @a, align 4
-; CHECK-NEXT: [[TMP7:%.*]] = add i32 [[TMP6]], 5
-; CHECK-NEXT: br label [[BB8]]
-; CHECK: bb5:
-; CHECK-NEXT: [[TMP8:%.*]] = load i32, i32* @a, align 4
-; CHECK-NEXT: [[TMP9:%.*]] = icmp eq i32 [[TMP8]], 5
-; CHECK-NEXT: br i1 [[TMP9]], label [[BB6:%.*]], label [[BB7:%.*]]
-; CHECK: bb6:
-; CHECK-NEXT: [[TMP10:%.*]] = load i32, i32* @a, align 4
-; CHECK-NEXT: [[TMP11:%.*]] = add i32 [[TMP10]], 4
-; CHECK-NEXT: br label [[BB8]]
-; CHECK: bb7:
-; CHECK-NEXT: [[TMP12:%.*]] = load i32, i32* @a, align 4
-; CHECK-NEXT: br label [[BB8]]
-; CHECK: bb8:
-; CHECK-NEXT: [[DOT0:%.*]] = phi i32 [ [[TMP12]], [[BB7]] ], [ [[TMP11]], [[BB6]] ], [ [[TMP7]], [[BB4]] ], [ 4, [[BB2]] ], [ 5, [[BB]] ]
-; CHECK-NEXT: br label [[RETURN:%.*]]
-; CHECK: return:
-; CHECK-NEXT: ret i32 [[DOT0]]
-;
-entry:
- %0 = load i32, i32* @a, align 4
- %1 = icmp eq i32 %0, 4
- br i1 %1, label %bb, label %bb1
-
-bb: ; preds = %entry
- br label %bb8
-
-bb1: ; preds = %entry
- %2 = load i32, i32* @a, align 4
- %3 = icmp eq i32 %2, 5
- br i1 %3, label %bb2, label %bb3
-
-bb2: ; preds = %bb1
- br label %bb8
-
-bb3: ; preds = %bb1
- %4 = load i32, i32* @a, align 4
- %5 = icmp eq i32 %4, 4
- br i1 %5, label %bb4, label %bb5
-
-bb4: ; preds = %bb3
- %6 = load i32, i32* @a, align 4
- %7 = add i32 %6, 5
- br label %bb8
-
-bb5: ; preds = %bb3
- %8 = load i32, i32* @a, align 4
- %9 = icmp eq i32 %8, 5
- br i1 %9, label %bb6, label %bb7
-
-bb6: ; preds = %bb5
- %10 = load i32, i32* @a, align 4
- %11 = add i32 %10, 4
- br label %bb8
-
-bb7: ; preds = %bb5
- %12 = load i32, i32* @a, align 4
- br label %bb8
-
-bb8: ; preds = %bb7, %bb6, %bb4, %bb2, %bb
- %.0 = phi i32 [ %12, %bb7 ], [ %11, %bb6 ], [ %7, %bb4 ], [ 4, %bb2 ], [ 5, %bb ]
- br label %return
-
-return: ; preds = %bb8
- ret i32 %.0
-}
-
-declare void @foo(i1)
-declare void @bar(i32)
-
-define void @test3(i32 %x, i32 %y) {
-; CHECK-LABEL: @test3(
-; CHECK-NEXT: [[XZ:%.*]] = icmp eq i32 [[X:%.*]], 0
-; CHECK-NEXT: [[YZ:%.*]] = icmp eq i32 [[Y:%.*]], 0
-; CHECK-NEXT: [[Z:%.*]] = and i1 [[XZ]], [[YZ]]
-; CHECK: [[X_0:%.*]] = call i32 @llvm.ssa.copy.{{.+}}(i32 [[X]])
-; CHECK: [[Y_0:%.*]] = call i32 @llvm.ssa.copy.{{.+}}(i32 [[Y]])
-; CHECK: [[XZ_0:%.*]] = call i1 @llvm.ssa.copy.{{.+}}(i1 [[XZ]])
-; CHECK: [[YZ_0:%.*]] = call i1 @llvm.ssa.copy.{{.+}}(i1 [[YZ]])
-; CHECK: [[Z_0:%.*]] = call i1 @llvm.ssa.copy.{{.+}}(i1 [[Z]])
-; CHECK-NEXT: br i1 [[Z]], label [[BOTH_ZERO:%.*]], label [[NOPE:%.*]]
-; CHECK: both_zero:
-; CHECK-NEXT: call void @foo(i1 [[XZ_0]])
-; CHECK-NEXT: call void @foo(i1 [[YZ_0]])
-; CHECK-NEXT: call void @bar(i32 [[X_0]])
-; CHECK-NEXT: call void @bar(i32 [[Y_0]])
-; CHECK-NEXT: ret void
-; CHECK: nope:
-; CHECK-NEXT: call void @foo(i1 [[Z_0]])
-; CHECK-NEXT: ret void
-;
- %xz = icmp eq i32 %x, 0
- %yz = icmp eq i32 %y, 0
- %z = and i1 %xz, %yz
- br i1 %z, label %both_zero, label %nope
-both_zero:
- call void @foo(i1 %xz)
- call void @foo(i1 %yz)
- call void @bar(i32 %x)
- call void @bar(i32 %y)
- ret void
-nope:
- call void @foo(i1 %z)
- ret void
-}
-
-define void @test4(i1 %b, i32 %x) {
-; CHECK-LABEL: @test4(
-; CHECK-NEXT: br i1 [[B:%.*]], label [[SW:%.*]], label [[CASE3:%.*]]
-; CHECK: sw:
-; CHECK: i32 0, label [[CASE0:%.*]]
-; CHECK-NEXT: i32 1, label [[CASE1:%.*]]
-; CHECK-NEXT: i32 2, label [[CASE0]]
-; CHECK-NEXT: i32 3, label [[CASE3]]
-; CHECK-NEXT: i32 4, label [[DEFAULT:%.*]]
-; CHECK-NEXT: ] Edge: [label [[SW]],label %case1] }
-; CHECK-NEXT: [[X_0:%.*]] = call i32 @llvm.ssa.copy.{{.+}}(i32 [[X:%.*]])
-; CHECK-NEXT: switch i32 [[X]], label [[DEFAULT]] [
-; CHECK-NEXT: i32 0, label [[CASE0]]
-; CHECK-NEXT: i32 1, label [[CASE1]]
-; CHECK-NEXT: i32 2, label [[CASE0]]
-; CHECK-NEXT: i32 3, label [[CASE3]]
-; CHECK-NEXT: i32 4, label [[DEFAULT]]
-; CHECK-NEXT: ]
-; CHECK: default:
-; CHECK-NEXT: call void @bar(i32 [[X]])
-; CHECK-NEXT: ret void
-; CHECK: case0:
-; CHECK-NEXT: call void @bar(i32 [[X]])
-; CHECK-NEXT: ret void
-; CHECK: case1:
-; CHECK-NEXT: call void @bar(i32 [[X_0]])
-; CHECK-NEXT: ret void
-; CHECK: case3:
-; CHECK-NEXT: call void @bar(i32 [[X]])
-; CHECK-NEXT: ret void
-;
- br i1 %b, label %sw, label %case3
-sw:
- switch i32 %x, label %default [
- i32 0, label %case0
- i32 1, label %case1
- i32 2, label %case0
- i32 3, label %case3
- i32 4, label %default
- ]
-default:
- call void @bar(i32 %x)
- ret void
-case0:
- call void @bar(i32 %x)
- ret void
-case1:
- call void @bar(i32 %x)
- ret void
-case3:
- call void @bar(i32 %x)
- ret void
-}
-
-define i1 @test5(i32 %x, i32 %y) {
-; CHECK-LABEL: @test5(
-; CHECK-NEXT: [[CMP:%.*]] = icmp eq i32 [[X:%.*]], [[Y:%.*]]
-; CHECK: [[X_0:%.*]] = call i32 @llvm.ssa.copy.{{.+}}(i32 [[X]])
-; CHECK: [[X_1:%.*]] = call i32 @llvm.ssa.copy.{{.+}}(i32 [[X]])
-; CHECK: [[Y_0:%.*]] = call i32 @llvm.ssa.copy.{{.+}}(i32 [[Y]])
-; CHECK: [[Y_1:%.*]] = call i32 @llvm.ssa.copy.{{.+}}(i32 [[Y]])
-; CHECK-NEXT: br i1 [[CMP]], label [[SAME:%.*]], label [[DIFFERENT:%.*]]
-; CHECK: same:
-; CHECK-NEXT: [[CMP2:%.*]] = icmp ne i32 [[X_0]], [[Y_0]]
-; CHECK-NEXT: ret i1 [[CMP2]]
-; CHECK: different:
-; CHECK-NEXT: [[CMP3:%.*]] = icmp eq i32 [[X_1]], [[Y_1]]
-; CHECK-NEXT: ret i1 [[CMP3]]
-;
- %cmp = icmp eq i32 %x, %y
- br i1 %cmp, label %same, label %different
-
-same:
- %cmp2 = icmp ne i32 %x, %y
- ret i1 %cmp2
-
-different:
- %cmp3 = icmp eq i32 %x, %y
- ret i1 %cmp3
-}
-
-define i1 @test6(i32 %x, i32 %y) {
-; CHECK-LABEL: @test6(
-; CHECK-NEXT: [[CMP2:%.*]] = icmp ne i32 [[X:%.*]], [[Y:%.*]]
-; CHECK-NEXT: [[CMP:%.*]] = icmp eq i32 [[X]], [[Y]]
-; CHECK-NEXT: [[CMP3:%.*]] = icmp eq i32 [[X]], [[Y]]
-; CHECK-NEXT: br i1 [[CMP]], label [[SAME:%.*]], label [[DIFFERENT:%.*]]
-; CHECK: same:
-; CHECK-NEXT: ret i1 [[CMP2]]
-; CHECK: different:
-; CHECK-NEXT: ret i1 [[CMP3]]
-;
- %cmp2 = icmp ne i32 %x, %y
- %cmp = icmp eq i32 %x, %y
- %cmp3 = icmp eq i32 %x, %y
- br i1 %cmp, label %same, label %different
-
-same:
- ret i1 %cmp2
-
-different:
- ret i1 %cmp3
-}
-
-define i1 @test6_fp(float %x, float %y) {
-; CHECK-LABEL: @test6_fp(
-; CHECK-NEXT: [[CMP2:%.*]] = fcmp une float [[X:%.*]], [[Y:%.*]]
-; CHECK-NEXT: [[CMP:%.*]] = fcmp oeq float [[X]], [[Y]]
-; CHECK-NEXT: [[CMP3:%.*]] = fcmp oeq float [[X]], [[Y]]
-; CHECK-NEXT: br i1 [[CMP]], label [[SAME:%.*]], label [[DIFFERENT:%.*]]
-; CHECK: same:
-; CHECK-NEXT: ret i1 [[CMP2]]
-; CHECK: different:
-; CHECK-NEXT: ret i1 [[CMP3]]
-;
- %cmp2 = fcmp une float %x, %y
- %cmp = fcmp oeq float %x, %y
- %cmp3 = fcmp oeq float %x, %y
- br i1 %cmp, label %same, label %different
-
-same:
- ret i1 %cmp2
-
-different:
- ret i1 %cmp3
-}
-
-define i1 @test7(i32 %x, i32 %y) {
-; CHECK-LABEL: @test7(
-; CHECK-NEXT: [[CMP:%.*]] = icmp sgt i32 [[X:%.*]], [[Y:%.*]]
-; CHECK: [[X_0:%.*]] = call i32 @llvm.ssa.copy.{{.+}}(i32 [[X]])
-; CHECK: [[X_1:%.*]] = call i32 @llvm.ssa.copy.{{.+}}(i32 [[X]])
-; CHECK: [[Y_0:%.*]] = call i32 @llvm.ssa.copy.{{.+}}(i32 [[Y]])
-; CHECK: [[Y_1:%.*]] = call i32 @llvm.ssa.copy.{{.+}}(i32 [[Y]])
-; CHECK-NEXT: br i1 [[CMP]], label [[SAME:%.*]], label [[DIFFERENT:%.*]]
-; CHECK: same:
-; CHECK-NEXT: [[CMP2:%.*]] = icmp sle i32 [[X_0]], [[Y_0]]
-; CHECK-NEXT: ret i1 [[CMP2]]
-; CHECK: different:
-; CHECK-NEXT: [[CMP3:%.*]] = icmp sgt i32 [[X_1]], [[Y_1]]
-; CHECK-NEXT: ret i1 [[CMP3]]
-;
- %cmp = icmp sgt i32 %x, %y
- br i1 %cmp, label %same, label %different
-
-same:
- %cmp2 = icmp sle i32 %x, %y
- ret i1 %cmp2
-
-different:
- %cmp3 = icmp sgt i32 %x, %y
- ret i1 %cmp3
-}
-
-define i1 @test7_fp(float %x, float %y) {
-; CHECK-LABEL: @test7_fp(
-; CHECK-NEXT: [[CMP:%.*]] = fcmp ogt float [[X:%.*]], [[Y:%.*]]
-; CHECK: [[X_0:%.*]] = call float @llvm.ssa.copy.{{.+}}(float [[X]])
-; CHECK: [[X_1:%.*]] = call float @llvm.ssa.copy.{{.+}}(float [[X]])
-; CHECK: [[Y_0:%.*]] = call float @llvm.ssa.copy.{{.+}}(float [[Y]])
-; CHECK: [[Y_1:%.*]] = call float @llvm.ssa.copy.{{.+}}(float [[Y]])
-; CHECK-NEXT: br i1 [[CMP]], label [[SAME:%.*]], label [[DIFFERENT:%.*]]
-; CHECK: same:
-; CHECK-NEXT: [[CMP2:%.*]] = fcmp ule float [[X_0]], [[Y_0]]
-; CHECK-NEXT: ret i1 [[CMP2]]
-; CHECK: different:
-; CHECK-NEXT: [[CMP3:%.*]] = fcmp ogt float [[X_1]], [[Y_1]]
-; CHECK-NEXT: ret i1 [[CMP3]]
-;
- %cmp = fcmp ogt float %x, %y
- br i1 %cmp, label %same, label %different
-
-same:
- %cmp2 = fcmp ule float %x, %y
- ret i1 %cmp2
-
-different:
- %cmp3 = fcmp ogt float %x, %y
- ret i1 %cmp3
-}
-
-define i1 @test8(i32 %x, i32 %y) {
-; CHECK-LABEL: @test8(
-; CHECK-NEXT: [[CMP2:%.*]] = icmp sle i32 [[X:%.*]], [[Y:%.*]]
-; CHECK-NEXT: [[CMP:%.*]] = icmp sgt i32 [[X]], [[Y]]
-; CHECK-NEXT: [[CMP3:%.*]] = icmp sgt i32 [[X]], [[Y]]
-; CHECK-NEXT: br i1 [[CMP]], label [[SAME:%.*]], label [[DIFFERENT:%.*]]
-; CHECK: same:
-; CHECK-NEXT: ret i1 [[CMP2]]
-; CHECK: different:
-; CHECK-NEXT: ret i1 [[CMP3]]
-;
- %cmp2 = icmp sle i32 %x, %y
- %cmp = icmp sgt i32 %x, %y
- %cmp3 = icmp sgt i32 %x, %y
- br i1 %cmp, label %same, label %different
-
-same:
- ret i1 %cmp2
-
-different:
- ret i1 %cmp3
-}
-
-define i1 @test8_fp(float %x, float %y) {
-; CHECK-LABEL: @test8_fp(
-; CHECK-NEXT: [[CMP2:%.*]] = fcmp ule float [[X:%.*]], [[Y:%.*]]
-; CHECK-NEXT: [[CMP:%.*]] = fcmp ogt float [[X]], [[Y]]
-; CHECK-NEXT: [[CMP3:%.*]] = fcmp ogt float [[X]], [[Y]]
-; CHECK-NEXT: br i1 [[CMP]], label [[SAME:%.*]], label [[DIFFERENT:%.*]]
-; CHECK: same:
-; CHECK-NEXT: ret i1 [[CMP2]]
-; CHECK: different:
-; CHECK-NEXT: ret i1 [[CMP3]]
-;
- %cmp2 = fcmp ule float %x, %y
- %cmp = fcmp ogt float %x, %y
- %cmp3 = fcmp ogt float %x, %y
- br i1 %cmp, label %same, label %different
-
-same:
- ret i1 %cmp2
-
-different:
- ret i1 %cmp3
-}
-
-define i32 @test9(i32 %i, i32 %j) {
-; CHECK-LABEL: @test9(
-; CHECK-NEXT: [[CMP:%.*]] = icmp eq i32 [[I:%.*]], [[J:%.*]]
-; CHECK: [[I_0:%.*]] = call i32 @llvm.ssa.copy.{{.+}}(i32 [[I]])
-; CHECK: [[J_0:%.*]] = call i32 @llvm.ssa.copy.{{.+}}(i32 [[J]])
-; CHECK-NEXT: br i1 [[CMP]], label [[COND_TRUE:%.*]], label [[RET:%.*]]
-; CHECK: cond_true:
-; CHECK-NEXT: [[DIFF:%.*]] = sub i32 [[I_0]], [[J_0]]
-; CHECK-NEXT: ret i32 [[DIFF]]
-; CHECK: ret:
-; CHECK-NEXT: ret i32 5
-;
- %cmp = icmp eq i32 %i, %j
- br i1 %cmp, label %cond_true, label %ret
-
-cond_true:
- %diff = sub i32 %i, %j
- ret i32 %diff
-
-ret:
- ret i32 5
-}
-
-define i32 @test10(i32 %j, i32 %i) {
-; CHECK-LABEL: @test10(
-; CHECK-NEXT: [[CMP:%.*]] = icmp eq i32 [[I:%.*]], [[J:%.*]]
-; CHECK: [[J_0:%.*]] = call i32 @llvm.ssa.copy.{{.+}}(i32 [[J]])
-; CHECK: [[I_0:%.*]] = call i32 @llvm.ssa.copy.{{.+}}(i32 [[I]])
-; CHECK-NEXT: br i1 [[CMP]], label [[COND_TRUE:%.*]], label [[RET:%.*]]
-; CHECK: cond_true:
-; CHECK-NEXT: [[DIFF:%.*]] = sub i32 [[I_0]], [[J_0]]
-; CHECK-NEXT: ret i32 [[DIFF]]
-; CHECK: ret:
-; CHECK-NEXT: ret i32 5
-;
- %cmp = icmp eq i32 %i, %j
- br i1 %cmp, label %cond_true, label %ret
-
-cond_true:
- %diff = sub i32 %i, %j
- ret i32 %diff
-
-ret:
- ret i32 5
-}
-
-declare i32 @yogibar()
-
-define i32 @test11(i32 %x) {
-; CHECK-LABEL: @test11(
-; CHECK-NEXT: [[V0:%.*]] = call i32 @yogibar()
-; CHECK-NEXT: [[V1:%.*]] = call i32 @yogibar()
-; CHECK-NEXT: [[CMP:%.*]] = icmp eq i32 [[V0]], [[V1]]
-; CHECK: [[V0_0:%.*]] = call i32 @llvm.ssa.copy.{{.+}}(i32 [[V0]])
-; CHECK: [[V1_0:%.*]] = call i32 @llvm.ssa.copy.{{.+}}(i32 [[V1]])
-; CHECK-NEXT: br i1 [[CMP]], label [[COND_TRUE:%.*]], label [[NEXT:%.*]]
-; CHECK: cond_true:
-; CHECK-NEXT: ret i32 [[V1_0]]
-; CHECK: next:
-; CHECK-NEXT: [[CMP2:%.*]] = icmp eq i32 [[X:%.*]], [[V0_0]]
-; CHECK: [[V0_0_1:%.*]] = call i32 @llvm.ssa.copy.{{.+}}(i32 [[V0_0]])
-; CHECK-NEXT: br i1 [[CMP2]], label [[COND_TRUE2:%.*]], label [[NEXT2:%.*]]
-; CHECK: cond_true2:
-; CHECK-NEXT: ret i32 [[V0_0_1]]
-; CHECK: next2:
-; CHECK-NEXT: ret i32 0
-;
- %v0 = call i32 @yogibar()
- %v1 = call i32 @yogibar()
- %cmp = icmp eq i32 %v0, %v1
- br i1 %cmp, label %cond_true, label %next
-
-cond_true:
- ret i32 %v1
-
-next:
- %cmp2 = icmp eq i32 %x, %v0
- br i1 %cmp2, label %cond_true2, label %next2
-
-cond_true2:
- ret i32 %v0
-
-next2:
- ret i32 0
-}
-
-define i32 @test12(i32 %x) {
-; CHECK-LABEL: @test12(
-; CHECK-NEXT: [[CMP:%.*]] = icmp eq i32 [[X:%.*]], 0
-; CHECK: [[X_0:%.*]] = call i32 @llvm.ssa.copy.{{.+}}(i32 [[X]])
-; CHECK: [[X_1:%.*]] = call i32 @llvm.ssa.copy.{{.+}}(i32 [[X]])
-; CHECK-NEXT: br i1 [[CMP]], label [[COND_TRUE:%.*]], label [[COND_FALSE:%.*]]
-; CHECK: cond_true:
-; CHECK-NEXT: br label [[RET:%.*]]
-; CHECK: cond_false:
-; CHECK-NEXT: br label [[RET]]
-; CHECK: ret:
-; CHECK-NEXT: [[RES:%.*]] = phi i32 [ [[X_0]], [[COND_TRUE]] ], [ [[X_1]], [[COND_FALSE]] ]
-; CHECK-NEXT: ret i32 [[RES]]
-;
- %cmp = icmp eq i32 %x, 0
- br i1 %cmp, label %cond_true, label %cond_false
-
-cond_true:
- br label %ret
-
-cond_false:
- br label %ret
-
-ret:
- %res = phi i32 [ %x, %cond_true ], [ %x, %cond_false ]
- ret i32 %res
-}
diff --git a/llvm/test/Transforms/Util/PredicateInfo/diamond.ll b/llvm/test/Transforms/Util/PredicateInfo/diamond.ll
deleted file mode 100644
index 8e3da687c13..00000000000
--- a/llvm/test/Transforms/Util/PredicateInfo/diamond.ll
+++ /dev/null
@@ -1,68 +0,0 @@
-; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
-; RUN: opt -print-predicateinfo < %s 2>&1 | FileCheck %s
-define i1 @f(i32 %x, i1 %y) {
-; CHECK-LABEL: @f(
-; CHECK-NEXT: br i1 [[Y:%.*]], label [[BB0:%.*]], label [[BB1:%.*]]
-; CHECK: bb0:
-; CHECK-NEXT: [[CMP:%.*]] = icmp sge i32 [[X:%.*]], 0
-; CHECK: [[X_0:%.*]] = call i32 @llvm.ssa.copy.{{.+}}(i32 [[X]])
-; CHECK-NEXT: br i1 [[CMP]], label [[BB2:%.*]], label [[BB3:%.*]]
-; CHECK: bb1:
-; CHECK-NEXT: [[X2:%.*]] = add nuw nsw i32 [[X]], 1
-; CHECK-NEXT: [[CMP2:%.*]] = icmp sge i32 [[X2]], 2
-; CHECK: [[X2_0:%.*]] = call i32 @llvm.ssa.copy.{{.+}}(i32 [[X2]])
-; CHECK-NEXT: br i1 [[CMP2]], label [[BB2]], label [[BB3]]
-; CHECK: bb2:
-; CHECK-NEXT: [[X3:%.*]] = phi i32 [ [[X_0]], [[BB0]] ], [ [[X2_0]], [[BB1]] ]
-; CHECK-NEXT: br label [[BB3]]
-; CHECK: bb3:
-; CHECK-NEXT: ret i1 false
-;
- br i1 %y, label %bb0, label %bb1
- bb0:
- %cmp = icmp sge i32 %x, 0 ; x > 0
- br i1 %cmp, label %bb2, label %bb3
- bb1:
- %x2 = add nsw nuw i32 %x, 1
- %cmp2 = icmp sge i32 %x2, 2 ; x+1 > 2 / x > 1
- br i1 %cmp2, label %bb2, label %bb3
- bb2:
- %x3 = phi i32 [ %x, %bb0 ], [ %x2, %bb1 ]
- br label %bb3
- bb3:
- ret i1 0
-}
-
-define i1 @g(i32 %x, i1 %y) {
-; CHECK-LABEL: @g(
-; CHECK-NEXT: br i1 [[Y:%.*]], label [[BB0:%.*]], label [[BB1:%.*]]
-; CHECK: bb0:
-; CHECK-NEXT: [[CMP:%.*]] = icmp sge i32 [[X:%.*]], 0
-; CHECK: [[X_0:%.*]] = call i32 @llvm.ssa.copy.{{.+}}(i32 [[X]])
-; CHECK-NEXT: br i1 [[CMP]], label [[BB3:%.*]], label [[BB2:%.*]]
-; CHECK: bb1:
-; CHECK-NEXT: [[X2:%.*]] = add nuw nsw i32 [[X]], 1
-; CHECK-NEXT: [[CMP2:%.*]] = icmp sge i32 [[X2]], 2
-; CHECK: [[X2_0:%.*]] = call i32 @llvm.ssa.copy.{{.+}}(i32 [[X2]])
-; CHECK-NEXT: br i1 [[CMP2]], label [[BB3]], label [[BB2]]
-; CHECK: bb2:
-; CHECK-NEXT: [[X3:%.*]] = phi i32 [ [[X_0]], [[BB0]] ], [ [[X2_0]], [[BB1]] ]
-; CHECK-NEXT: br label [[BB3]]
-; CHECK: bb3:
-; CHECK-NEXT: ret i1 false
-;
- br i1 %y, label %bb0, label %bb1
- bb0:
- %cmp = icmp sge i32 %x, 0 ; x > 0
- br i1 %cmp, label %bb3, label %bb2
- bb1:
- %x2 = add nsw nuw i32 %x, 1
- %cmp2 = icmp sge i32 %x2, 2 ; x+1 > 2 / x > 1
- br i1 %cmp2, label %bb3, label %bb2
- bb2:
- %x3 = phi i32 [ %x, %bb0 ], [ %x2, %bb1 ]
- br label %bb3
- bb3:
- ret i1 0
-}
-
diff --git a/llvm/test/Transforms/Util/PredicateInfo/edge.ll b/llvm/test/Transforms/Util/PredicateInfo/edge.ll
deleted file mode 100644
index 31c8faae496..00000000000
--- a/llvm/test/Transforms/Util/PredicateInfo/edge.ll
+++ /dev/null
@@ -1,242 +0,0 @@
-; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
-; RUN: opt -print-predicateinfo -analyze < %s 2>&1 | FileCheck %s
-
-define i32 @f1(i32 %x) {
-; CHECK-LABEL: @f1(
-; CHECK-NEXT: bb0:
-; CHECK-NEXT: [[CMP:%.*]] = icmp eq i32 [[X:%.*]], 0
-; CHECK: [[X_0:%.*]] = call i32 @llvm.ssa.copy.{{.+}}(i32 [[X]])
-; CHECK-NEXT: br i1 [[CMP]], label [[BB2:%.*]], label [[BB1:%.*]]
-; CHECK: bb1:
-; CHECK-NEXT: br label [[BB2]]
-; CHECK: bb2:
-; CHECK-NEXT: [[COND:%.*]] = phi i32 [ [[X_0]], [[BB0:%.*]] ], [ 0, [[BB1]] ]
-; CHECK-NEXT: [[FOO:%.*]] = add i32 [[COND]], [[X]]
-; CHECK-NEXT: ret i32 [[FOO]]
-;
-bb0:
- %cmp = icmp eq i32 %x, 0
- br i1 %cmp, label %bb2, label %bb1
-bb1:
- br label %bb2
-bb2:
- %cond = phi i32 [ %x, %bb0 ], [ 0, %bb1 ]
- %foo = add i32 %cond, %x
- ret i32 %foo
-}
-
-define i32 @f2(i32 %x) {
-; CHECK-LABEL: @f2(
-; CHECK-NEXT: bb0:
-; CHECK-NEXT: [[CMP:%.*]] = icmp ne i32 [[X:%.*]], 0
-; CHECK: [[X_0:%.*]] = call i32 @llvm.ssa.copy.{{.+}}(i32 [[X]])
-; CHECK-NEXT: br i1 [[CMP]], label [[BB1:%.*]], label [[BB2:%.*]]
-; CHECK: bb1:
-; CHECK-NEXT: br label [[BB2]]
-; CHECK: bb2:
-; CHECK-NEXT: [[COND:%.*]] = phi i32 [ [[X_0]], [[BB0:%.*]] ], [ 0, [[BB1]] ]
-; CHECK-NEXT: [[FOO:%.*]] = add i32 [[COND]], [[X]]
-; CHECK-NEXT: ret i32 [[FOO]]
-;
-bb0:
- %cmp = icmp ne i32 %x, 0
- br i1 %cmp, label %bb1, label %bb2
-bb1:
- br label %bb2
-bb2:
- %cond = phi i32 [ %x, %bb0 ], [ 0, %bb1 ]
- %foo = add i32 %cond, %x
- ret i32 %foo
-}
-
-define i32 @f3(i32 %x) {
-; CHECK-LABEL: @f3(
-; CHECK-NEXT: bb0:
-; CHECK: [[X_0:%.*]] = call i32 @llvm.ssa.copy.{{.+}}(i32 [[X:%.*]])
-; CHECK-NEXT: switch i32 [[X]], label [[BB1:%.*]] [
-; CHECK-NEXT: i32 0, label [[BB2:%.*]]
-; CHECK-NEXT: ]
-; CHECK: bb1:
-; CHECK-NEXT: br label [[BB2]]
-; CHECK: bb2:
-; CHECK-NEXT: [[COND:%.*]] = phi i32 [ [[X_0]], [[BB0:%.*]] ], [ 0, [[BB1]] ]
-; CHECK-NEXT: [[FOO:%.*]] = add i32 [[COND]], [[X]]
-; CHECK-NEXT: ret i32 [[FOO]]
-;
-bb0:
- switch i32 %x, label %bb1 [ i32 0, label %bb2]
-bb1:
- br label %bb2
-bb2:
- %cond = phi i32 [ %x, %bb0 ], [ 0, %bb1 ]
- %foo = add i32 %cond, %x
- ret i32 %foo
-}
-
-
-define double @fcmp_oeq_not_zero(double %x, double %y) {
-; CHECK-LABEL: @fcmp_oeq_not_zero(
-; CHECK-NEXT: entry:
-; CHECK-NEXT: [[CMP:%.*]] = fcmp oeq double [[Y:%.*]], 2.000000e+00
-; CHECK: [[Y_0:%.*]] = call double @llvm.ssa.copy.{{.+}}(double [[Y]])
-; CHECK-NEXT: br i1 [[CMP]], label [[IF:%.*]], label [[RETURN:%.*]]
-; CHECK: if:
-; CHECK-NEXT: [[DIV:%.*]] = fdiv double [[X:%.*]], [[Y_0]]
-; CHECK-NEXT: br label [[RETURN]]
-; CHECK: return:
-; CHECK-NEXT: [[RETVAL:%.*]] = phi double [ [[DIV]], [[IF]] ], [ [[X]], [[ENTRY:%.*]] ]
-; CHECK-NEXT: ret double [[RETVAL]]
-;
-entry:
- %cmp = fcmp oeq double %y, 2.0
- br i1 %cmp, label %if, label %return
-
-if:
- %div = fdiv double %x, %y
- br label %return
-
-return:
- %retval = phi double [ %div, %if ], [ %x, %entry ]
- ret double %retval
-
-}
-
-define double @fcmp_une_not_zero(double %x, double %y) {
-; CHECK-LABEL: @fcmp_une_not_zero(
-; CHECK-NEXT: entry:
-; CHECK-NEXT: [[CMP:%.*]] = fcmp une double [[Y:%.*]], 2.000000e+00
-; CHECK: [[Y_0:%.*]] = call double @llvm.ssa.copy.{{.+}}(double [[Y]])
-; CHECK-NEXT: br i1 [[CMP]], label [[RETURN:%.*]], label [[ELSE:%.*]]
-; CHECK: else:
-; CHECK-NEXT: [[DIV:%.*]] = fdiv double [[X:%.*]], [[Y_0]]
-; CHECK-NEXT: br label [[RETURN]]
-; CHECK: return:
-; CHECK-NEXT: [[RETVAL:%.*]] = phi double [ [[DIV]], [[ELSE]] ], [ [[X]], [[ENTRY:%.*]] ]
-; CHECK-NEXT: ret double [[RETVAL]]
-;
-entry:
- %cmp = fcmp une double %y, 2.0
- br i1 %cmp, label %return, label %else
-
-else:
- %div = fdiv double %x, %y
- br label %return
-
-return:
- %retval = phi double [ %div, %else ], [ %x, %entry ]
- ret double %retval
-
-}
-
-define double @fcmp_oeq_zero(double %x, double %y) {
-; CHECK-LABEL: @fcmp_oeq_zero(
-; CHECK-NEXT: entry:
-; CHECK-NEXT: [[CMP:%.*]] = fcmp oeq double [[Y:%.*]], 0.000000e+00
-; CHECK: [[Y_0:%.*]] = call double @llvm.ssa.copy.{{.+}}(double [[Y]])
-; CHECK-NEXT: br i1 [[CMP]], label [[IF:%.*]], label [[RETURN:%.*]]
-; CHECK: if:
-; CHECK-NEXT: [[DIV:%.*]] = fdiv double [[X:%.*]], [[Y_0]]
-; CHECK-NEXT: br label [[RETURN]]
-; CHECK: return:
-; CHECK-NEXT: [[RETVAL:%.*]] = phi double [ [[DIV]], [[IF]] ], [ [[X]], [[ENTRY:%.*]] ]
-; CHECK-NEXT: ret double [[RETVAL]]
-;
-entry:
- %cmp = fcmp oeq double %y, 0.0
- br i1 %cmp, label %if, label %return
-
-if:
- %div = fdiv double %x, %y
- br label %return
-
-return:
- %retval = phi double [ %div, %if ], [ %x, %entry ]
- ret double %retval
-
-}
-
-define double @fcmp_une_zero(double %x, double %y) {
-; CHECK-LABEL: @fcmp_une_zero(
-; CHECK-NEXT: entry:
-; CHECK-NEXT: [[CMP:%.*]] = fcmp une double [[Y:%.*]], -0.000000e+00
-; CHECK: [[Y_0:%.*]] = call double @llvm.ssa.copy.{{.+}}(double [[Y]])
-; CHECK-NEXT: br i1 [[CMP]], label [[RETURN:%.*]], label [[ELSE:%.*]]
-; CHECK: else:
-; CHECK-NEXT: [[DIV:%.*]] = fdiv double [[X:%.*]], [[Y_0]]
-; CHECK-NEXT: br label [[RETURN]]
-; CHECK: return:
-; CHECK-NEXT: [[RETVAL:%.*]] = phi double [ [[DIV]], [[ELSE]] ], [ [[X]], [[ENTRY:%.*]] ]
-; CHECK-NEXT: ret double [[RETVAL]]
-;
-entry:
- %cmp = fcmp une double %y, -0.0
- br i1 %cmp, label %return, label %else
-
-else:
- %div = fdiv double %x, %y
- br label %return
-
-return:
- %retval = phi double [ %div, %else ], [ %x, %entry ]
- ret double %retval
-
-}
-
-
-define double @fcmp_oeq_maybe_zero(double %x, double %y, double %z1, double %z2) {
-; CHECK-LABEL: @fcmp_oeq_maybe_zero(
-; CHECK-NEXT: entry:
-; CHECK-NEXT: [[Z:%.*]] = fadd double [[Z1:%.*]], [[Z2:%.*]]
-; CHECK-NEXT: [[CMP:%.*]] = fcmp oeq double [[Y:%.*]], [[Z]]
-; CHECK: [[Z_0:%.*]] = call double @llvm.ssa.copy.{{.+}}(double [[Z]])
-; CHECK-NEXT: br i1 [[CMP]], label [[IF:%.*]], label [[RETURN:%.*]]
-; CHECK: if:
-; CHECK-NEXT: [[DIV:%.*]] = fdiv double [[X:%.*]], [[Z_0]]
-; CHECK-NEXT: br label [[RETURN]]
-; CHECK: return:
-; CHECK-NEXT: [[RETVAL:%.*]] = phi double [ [[DIV]], [[IF]] ], [ [[X]], [[ENTRY:%.*]] ]
-; CHECK-NEXT: ret double [[RETVAL]]
-;
-entry:
- %z = fadd double %z1, %z2
- %cmp = fcmp oeq double %y, %z
- br i1 %cmp, label %if, label %return
-
-if:
- %div = fdiv double %x, %z
- br label %return
-
-return:
- %retval = phi double [ %div, %if ], [ %x, %entry ]
- ret double %retval
-
-}
-
-define double @fcmp_une_maybe_zero(double %x, double %y, double %z1, double %z2) {
-; CHECK-LABEL: @fcmp_une_maybe_zero(
-; CHECK-NEXT: entry:
-; CHECK-NEXT: [[Z:%.*]] = fadd double [[Z1:%.*]], [[Z2:%.*]]
-; CHECK-NEXT: [[CMP:%.*]] = fcmp une double [[Y:%.*]], [[Z]]
-; CHECK: [[Z_0:%.*]] = call double @llvm.ssa.copy.{{.+}}(double [[Z]])
-; CHECK-NEXT: br i1 [[CMP]], label [[RETURN:%.*]], label [[ELSE:%.*]]
-; CHECK: else:
-; CHECK-NEXT: [[DIV:%.*]] = fdiv double [[X:%.*]], [[Z_0]]
-; CHECK-NEXT: br label [[RETURN]]
-; CHECK: return:
-; CHECK-NEXT: [[RETVAL:%.*]] = phi double [ [[DIV]], [[ELSE]] ], [ [[X]], [[ENTRY:%.*]] ]
-; CHECK-NEXT: ret double [[RETVAL]]
-;
-entry:
- %z = fadd double %z1, %z2
- %cmp = fcmp une double %y, %z
- br i1 %cmp, label %return, label %else
-
-else:
- %div = fdiv double %x, %z
- br label %return
-
-return:
- %retval = phi double [ %div, %else ], [ %x, %entry ]
- ret double %retval
-
-}
diff --git a/llvm/test/Transforms/Util/PredicateInfo/ordering.ll b/llvm/test/Transforms/Util/PredicateInfo/ordering.ll
deleted file mode 100644
index 519168a58b4..00000000000
--- a/llvm/test/Transforms/Util/PredicateInfo/ordering.ll
+++ /dev/null
@@ -1,79 +0,0 @@
-; REQUIRES: assert
-; RUN: opt -print-predicateinfo -analyze -debug < %s 2>&1 | FileCheck %s
-
-declare void @use(i32)
-
-; Make sure we are visiting the values to build predicate infos for in a
-; deterministic order.
-define i32 @test12(i32 %x, i32 %y) {
-; CHECK: Visiting i32 %x
-; CHECK: Visiting i32 %y
-; CHECK: Visiting %lcmp = icmp eq i32 %x, 0
-; CHECK: Visiting %lcmp2 = icmp slt i32 %y, 1000
-; CHECK: Visiting %lcmp3 = icmp slt i32 %y.0, 900
-; CHECK: Visiting %lcmp4 = icmp slt i32 %y.0.1, 700
-; CHECK: Visiting %lcmp5 = icmp slt i32 %y.0.1.2, 700
-; CHECK: Visiting %lcmp6 = icmp slt i32 %y.0.1.2.3, 700
-; CHECK: Visiting %lcmp7 = icmp slt i32 %y.0.1.2.3.4, 700
-; CHECK: Visiting %rcmp = icmp eq i32 %x, 0
-entry:
- br i1 undef, label %left, label %right
-
-left:
- %lcmp = icmp eq i32 %x, 0
- br i1 %lcmp, label %left_cond_true, label %left_cond_false
-
-left_cond_true:
- %lcmp2 = icmp slt i32 %y, 1000
- br i1 %lcmp2, label %left_cond_true2, label %left_ret
-
-left_cond_true2:
- call void @use(i32 %y)
- %lcmp3 = icmp slt i32 %y, 900
- br i1 %lcmp3, label %left_cond_true3, label %left_ret
-
-left_cond_true3:
- call void @use(i32 %y)
- %lcmp4 = icmp slt i32 %y, 700
- br i1 %lcmp4, label %left_cond_true4, label %left_ret
-
-left_cond_true4:
- call void @use(i32 %y)
- %lcmp5 = icmp slt i32 %y, 700
- br i1 %lcmp5, label %left_cond_true5, label %left_ret
-
-left_cond_true5:
- call void @use(i32 %y)
- %lcmp6 = icmp slt i32 %y, 700
- br i1 %lcmp6, label %left_cond_true6, label %left_ret
-
-left_cond_true6:
- call void @use(i32 %y)
- %lcmp7 = icmp slt i32 %y, 700
- br i1 %lcmp7, label %left_cond_true7, label %left_ret
-
-left_cond_true7:
- ret i32 %y
-
-left_cond_false:
- br label %left_ret
-
-left_ret:
- %lres = phi i32 [ %x, %left_cond_true ], [ %x, %left_cond_false ], [ %x, %left_cond_true2 ], [ %x, %left_cond_true3 ], [ %x, %left_cond_true4 ], [ %x, %left_cond_true5 ], [ %x, %left_cond_true6 ]
-
- ret i32 %lres
-
-right:
- %rcmp = icmp eq i32 %x, 0
- br i1 %rcmp, label %right_cond_true, label %right_cond_false
-
-right_cond_true:
- br label %right_ret
-
-right_cond_false:
- br label %right_ret
-
-right_ret:
- %rres = phi i32 [ %x, %right_cond_true ], [ %x, %right_cond_false ]
- ret i32 %rres
-}
diff --git a/llvm/test/Transforms/Util/PredicateInfo/pr33456.ll b/llvm/test/Transforms/Util/PredicateInfo/pr33456.ll
deleted file mode 100644
index f1cc83a071b..00000000000
--- a/llvm/test/Transforms/Util/PredicateInfo/pr33456.ll
+++ /dev/null
@@ -1,68 +0,0 @@
-; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
-; RUN: opt -print-predicateinfo -analyze < %s 2>&1 | FileCheck %s
-; Don't insert predicate info for conditions with a single target.
-@a = global i32 1, align 4
-@d = common global i32 0, align 4
-@c = common global i32 0, align 4
-@b = common global i32 0, align 4
-@e = common global i32 0, align 4
-
-define i32 @main() {
-; CHECK-LABEL: @main(
-; CHECK-NEXT: [[TMP1:%.*]] = load i32, i32* @d, align 4
-; CHECK-NEXT: [[TMP2:%.*]] = icmp eq i32 [[TMP1]], 0
-; CHECK-NEXT: br i1 [[TMP2]], label [[TMP3:%.*]], label [[TMP13:%.*]]
-; CHECK: [[TMP4:%.*]] = load i32, i32* @a, align 4
-; CHECK-NEXT: [[TMP5:%.*]] = load i32, i32* @c, align 4
-; CHECK-NEXT: [[TMP6:%.*]] = icmp slt i32 [[TMP5]], 1
-; CHECK-NEXT: br i1 [[TMP6]], label [[TMP7:%.*]], label [[TMP9:%.*]]
-; CHECK: [[TMP8:%.*]] = icmp eq i32 [[TMP4]], 0
-; CHECK-NEXT: br i1 [[TMP8]], label [[TMP9]], label [[TMP9]]
-; CHECK: [[DOT0:%.*]] = phi i32 [ [[TMP4]], [[TMP7]] ], [ [[TMP4]], [[TMP7]] ], [ [[DOT1:%.*]], [[TMP13]] ], [ [[TMP4]], [[TMP3]] ]
-; CHECK-NEXT: [[TMP10:%.*]] = load i32, i32* @b, align 4
-; CHECK-NEXT: [[TMP11:%.*]] = sdiv i32 [[TMP10]], [[DOT0]]
-; CHECK-NEXT: [[TMP12:%.*]] = icmp eq i32 [[TMP11]], 0
-; CHECK-NEXT: br i1 [[TMP12]], label [[TMP13]], label [[TMP13]]
-; CHECK: [[DOT1]] = phi i32 [ [[DOT0]], [[TMP9]] ], [ [[DOT0]], [[TMP9]] ], [ undef, [[TMP0:%.*]] ]
-; CHECK-NEXT: [[TMP14:%.*]] = load i32, i32* @e, align 4
-; CHECK-NEXT: [[TMP15:%.*]] = icmp eq i32 [[TMP14]], 0
-; CHECK-NEXT: br i1 [[TMP15]], label [[TMP16:%.*]], label [[TMP9]]
-; CHECK: ret i32 0
-;
- %1 = load i32, i32* @d, align 4
- %2 = icmp eq i32 %1, 0
- br i1 %2, label %3, label %13
-
-; <label>:3: ; preds = %0
- %4 = load i32, i32* @a, align 4
- %5 = load i32, i32* @c, align 4
- %6 = icmp slt i32 %5, 1
- br i1 %6, label %7, label %9
-
-; <label>:7: ; preds = %3
- %8 = icmp eq i32 %4, 0
- br i1 %8, label %9, label %9
-
-; <label>:9: ; preds = %13, %7, %7, %3
- %.0 = phi i32 [ %4, %7 ], [ %4, %7 ], [ %.1, %13 ], [ %4, %3 ]
- %10 = load i32, i32* @b, align 4
- %11 = sdiv i32 %10, %.0
- %12 = icmp eq i32 %11, 0
- br i1 %12, label %13, label %13
-
-; <label>:13: ; preds = %9, %9, %0
- %.1 = phi i32 [ %.0, %9 ], [ %.0, %9 ], [ undef, %0 ]
- %14 = load i32, i32* @e, align 4
- %15 = icmp eq i32 %14, 0
- br i1 %15, label %16, label %9
-
-; <label>:16: ; preds = %13
- ret i32 0
-}
-
-; Function Attrs: argmemonly nounwind
-declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture)
-
-; Function Attrs: argmemonly nounwind
-declare void @llvm.lifetime.end.p0i8(i64, i8* nocapture)
-
diff --git a/llvm/test/Transforms/Util/PredicateInfo/pr33457.ll b/llvm/test/Transforms/Util/PredicateInfo/pr33457.ll
deleted file mode 100644
index b975ade9321..00000000000
--- a/llvm/test/Transforms/Util/PredicateInfo/pr33457.ll
+++ /dev/null
@@ -1,93 +0,0 @@
-; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
-; RUN: opt -print-predicateinfo -analyze < %s 2>&1 | FileCheck %s
-; Don't insert predicate info for conditions with a single target.
-@a = global i32 6, align 4
-@c = global i32 -1, align 4
-@e = common global i32 0, align 4
-@.str = private unnamed_addr constant [4 x i8] c"%d\0A\00", align 1
-@d = common global i32 0, align 4
-@b = common global [6 x i32] zeroinitializer, align 16
-
-; Function Attrs: nounwind ssp uwtable
-define i32 @main() {
-; CHECK-LABEL: @main(
-; CHECK-NEXT: store i32 6, i32* @e, align 4
-; CHECK-NEXT: br label [[TMP1:%.*]]
-; CHECK: [[TMP2:%.*]] = load i32, i32* @d, align 4
-; CHECK-NEXT: [[TMP3:%.*]] = sext i32 [[TMP2]] to i64
-; CHECK-NEXT: [[TMP4:%.*]] = getelementptr inbounds [6 x i32], [6 x i32]* @b, i64 0, i64 [[TMP3]]
-; CHECK-NEXT: [[TMP5:%.*]] = load i32, i32* [[TMP4]], align 4
-; CHECK-NEXT: [[TMP6:%.*]] = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 [[TMP5]])
-; CHECK-NEXT: [[TMP7:%.*]] = load i32, i32* @a, align 4
-; CHECK-NEXT: [[TMP8:%.*]] = icmp eq i32 [[TMP7]], 0
-; CHECK-NEXT: br i1 [[TMP8]], label %thread-pre-split, label [[TMP9:%.*]]
-; CHECK: [[TMP10:%.*]] = load i32, i32* @e, align 4
-; CHECK-NEXT: [[TMP11:%.*]] = icmp eq i32 [[TMP10]], 0
-; CHECK-NEXT: br i1 [[TMP11]], label [[TMP12:%.*]], label [[TMP12]]
-; CHECK: thread-pre-split:
-; CHECK-NEXT: [[DOTPR:%.*]] = load i32, i32* @e, align 4
-; CHECK-NEXT: br label [[TMP12]]
-; CHECK: [[TMP13:%.*]] = phi i32 [ [[DOTPR]], %thread-pre-split ], [ [[TMP10]], [[TMP9]] ], [ [[TMP10]], [[TMP9]] ]
-; CHECK-NEXT: [[TMP14:%.*]] = icmp ne i32 [[TMP13]], 0
-; CHECK-NEXT: br i1 [[TMP14]], label [[TMP15:%.*]], label [[TMP15]]
-; CHECK: br i1 [[TMP14]], label [[TMP16:%.*]], label [[TMP17:%.*]]
-; CHECK: br label [[TMP17]]
-; CHECK: [[DOT0:%.*]] = phi i32 [ 1, [[TMP16]] ], [ -1, [[TMP15]] ]
-; CHECK-NEXT: [[TMP18:%.*]] = and i32 [[DOT0]], 8693
-; CHECK-NEXT: [[TMP19:%.*]] = load i32, i32* @c, align 4
-; CHECK-NEXT: [[TMP20:%.*]] = xor i32 [[TMP18]], [[TMP19]]
-; CHECK-NEXT: [[TMP21:%.*]] = xor i32 [[TMP20]], -1
-; CHECK-NEXT: store i32 [[TMP21]], i32* @d, align 4
-; CHECK-NEXT: [[TMP22:%.*]] = icmp slt i32 [[TMP20]], -2
-; CHECK-NEXT: br i1 [[TMP22]], label [[TMP1]], label [[TMP23:%.*]]
-; CHECK: ret i32 0
-;
- store i32 6, i32* @e, align 4
- br label %1
-
-; <label>:1: ; preds = %17, %0
- %2 = load i32, i32* @d, align 4
- %3 = sext i32 %2 to i64
- %4 = getelementptr inbounds [6 x i32], [6 x i32]* @b, i64 0, i64 %3
- %5 = load i32, i32* %4, align 4
- %6 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %5) #2
- %7 = load i32, i32* @a, align 4
- %8 = icmp eq i32 %7, 0
- br i1 %8, label %thread-pre-split, label %9
-
-; <label>:9: ; preds = %1
- %10 = load i32, i32* @e, align 4
- %11 = icmp eq i32 %10, 0
- br i1 %11, label %12, label %12
-
-thread-pre-split: ; preds = %1
- %.pr = load i32, i32* @e, align 4
- br label %12
-
-; <label>:12: ; preds = %thread-pre-split, %9, %9
- %13 = phi i32 [ %.pr, %thread-pre-split ], [ %10, %9 ], [ %10, %9 ]
- %14 = icmp ne i32 %13, 0
- br i1 %14, label %15, label %15
-
-; <label>:15: ; preds = %12, %12
- br i1 %14, label %16, label %17
-
-; <label>:16: ; preds = %15
- br label %17
-
-; <label>:17: ; preds = %16, %15
- %.0 = phi i32 [ 1, %16 ], [ -1, %15 ]
- %18 = and i32 %.0, 8693
- %19 = load i32, i32* @c, align 4
- %20 = xor i32 %18, %19
- %21 = xor i32 %20, -1
- store i32 %21, i32* @d, align 4
- %22 = icmp slt i32 %20, -2
- br i1 %22, label %1, label %23
-
-; <label>:23: ; preds = %17
- ret i32 0
-}
-
-declare i32 @printf(i8*, ...)
-
diff --git a/llvm/test/Transforms/Util/PredicateInfo/testandor.ll b/llvm/test/Transforms/Util/PredicateInfo/testandor.ll
deleted file mode 100644
index 86d1a0d247d..00000000000
--- a/llvm/test/Transforms/Util/PredicateInfo/testandor.ll
+++ /dev/null
@@ -1,211 +0,0 @@
-; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
-; RUN: opt -print-predicateinfo < %s 2>&1 | FileCheck %s
-
-declare void @foo(i1)
-declare void @bar(i32)
-declare void @llvm.assume(i1)
-
-define void @testor(i32 %x, i32 %y) {
-; CHECK-LABEL: @testor(
-; CHECK-NEXT: [[XZ:%.*]] = icmp eq i32 [[X:%.*]], 0
-; CHECK-NEXT: [[YZ:%.*]] = icmp eq i32 [[Y:%.*]], 0
-; CHECK-NEXT: [[Z:%.*]] = or i1 [[XZ]], [[YZ]]
-; CHECK: [[X_0:%.*]] = call i32 @llvm.ssa.copy.{{.+}}(i32 [[X]])
-; CHECK: [[Y_0:%.*]] = call i32 @llvm.ssa.copy.{{.+}}(i32 [[Y]])
-; CHECK: [[XZ_0:%.*]] = call i1 @llvm.ssa.copy.{{.+}}(i1 [[XZ]])
-; CHECK: [[YZ_0:%.*]] = call i1 @llvm.ssa.copy.{{.+}}(i1 [[YZ]])
-; CHECK: [[Z_0:%.*]] = call i1 @llvm.ssa.copy.{{.+}}(i1 [[Z]])
-; CHECK-NEXT: br i1 [[Z]], label [[ONEOF:%.*]], label [[NEITHER:%.*]]
-; CHECK: oneof:
-; CHECK-NEXT: call void @foo(i1 [[XZ]])
-; CHECK-NEXT: call void @foo(i1 [[YZ]])
-; CHECK-NEXT: call void @bar(i32 [[X]])
-; CHECK-NEXT: call void @bar(i32 [[Y]])
-; CHECK-NEXT: ret void
-; CHECK: neither:
-; CHECK-NEXT: call void @foo(i1 [[XZ_0]])
-; CHECK-NEXT: call void @foo(i1 [[YZ_0]])
-; CHECK-NEXT: call void @bar(i32 [[X_0]])
-; CHECK-NEXT: call void @bar(i32 [[Y_0]])
-; CHECK-NEXT: call void @foo(i1 [[Z_0]])
-; CHECK-NEXT: ret void
-;
- %xz = icmp eq i32 %x, 0
- %yz = icmp eq i32 %y, 0
- %z = or i1 %xz, %yz
- br i1 %z, label %oneof, label %neither
-oneof:
-;; Should not insert on the true edge for or
- call void @foo(i1 %xz)
- call void @foo(i1 %yz)
- call void @bar(i32 %x)
- call void @bar(i32 %y)
- ret void
-neither:
- call void @foo(i1 %xz)
- call void @foo(i1 %yz)
- call void @bar(i32 %x)
- call void @bar(i32 %y)
- call void @foo(i1 %z)
- ret void
-}
-define void @testand(i32 %x, i32 %y) {
-; CHECK-LABEL: @testand(
-; CHECK-NEXT: [[XZ:%.*]] = icmp eq i32 [[X:%.*]], 0
-; CHECK-NEXT: [[YZ:%.*]] = icmp eq i32 [[Y:%.*]], 0
-; CHECK-NEXT: [[Z:%.*]] = and i1 [[XZ]], [[YZ]]
-; CHECK: [[X_0:%.*]] = call i32 @llvm.ssa.copy.{{.+}}(i32 [[X]])
-; CHECK: [[Y_0:%.*]] = call i32 @llvm.ssa.copy.{{.+}}(i32 [[Y]])
-; CHECK: [[XZ_0:%.*]] = call i1 @llvm.ssa.copy.{{.+}}(i1 [[XZ]])
-; CHECK: [[YZ_0:%.*]] = call i1 @llvm.ssa.copy.{{.+}}(i1 [[YZ]])
-; CHECK: [[Z_0:%.*]] = call i1 @llvm.ssa.copy.{{.+}}(i1 [[Z]])
-; CHECK-NEXT: br i1 [[Z]], label [[BOTH:%.*]], label [[NOPE:%.*]]
-; CHECK: both:
-; CHECK-NEXT: call void @foo(i1 [[XZ_0]])
-; CHECK-NEXT: call void @foo(i1 [[YZ_0]])
-; CHECK-NEXT: call void @bar(i32 [[X_0]])
-; CHECK-NEXT: call void @bar(i32 [[Y_0]])
-; CHECK-NEXT: ret void
-; CHECK: nope:
-; CHECK-NEXT: call void @foo(i1 [[XZ]])
-; CHECK-NEXT: call void @foo(i1 [[YZ]])
-; CHECK-NEXT: call void @bar(i32 [[X]])
-; CHECK-NEXT: call void @bar(i32 [[Y]])
-; CHECK-NEXT: call void @foo(i1 [[Z_0]])
-; CHECK-NEXT: ret void
-;
- %xz = icmp eq i32 %x, 0
- %yz = icmp eq i32 %y, 0
- %z = and i1 %xz, %yz
- br i1 %z, label %both, label %nope
-both:
- call void @foo(i1 %xz)
- call void @foo(i1 %yz)
- call void @bar(i32 %x)
- call void @bar(i32 %y)
- ret void
-nope:
-;; Should not insert on the false edge for and
- call void @foo(i1 %xz)
- call void @foo(i1 %yz)
- call void @bar(i32 %x)
- call void @bar(i32 %y)
- call void @foo(i1 %z)
- ret void
-}
-define void @testandsame(i32 %x, i32 %y) {
-; CHECK-LABEL: @testandsame(
-; CHECK-NEXT: [[XGT:%.*]] = icmp sgt i32 [[X:%.*]], 0
-; CHECK-NEXT: [[XLT:%.*]] = icmp slt i32 [[X]], 100
-; CHECK-NEXT: [[Z:%.*]] = and i1 [[XGT]], [[XLT]]
-; CHECK: [[X_0:%.*]] = call i32 @llvm.ssa.copy.{{.+}}(i32 [[X]])
-; CHECK: [[X_0_1:%.*]] = call i32 @llvm.ssa.copy.{{.+}}(i32 [[X_0]])
-; CHECK: [[XGT_0:%.*]] = call i1 @llvm.ssa.copy.{{.+}}(i1 [[XGT]])
-; CHECK: [[XLT_0:%.*]] = call i1 @llvm.ssa.copy.{{.+}}(i1 [[XLT]])
-; CHECK: [[Z_0:%.*]] = call i1 @llvm.ssa.copy.{{.+}}(i1 [[Z]])
-; CHECK-NEXT: br i1 [[Z]], label [[BOTH:%.*]], label [[NOPE:%.*]]
-; CHECK: both:
-; CHECK-NEXT: call void @foo(i1 [[XGT_0]])
-; CHECK-NEXT: call void @foo(i1 [[XLT_0]])
-; CHECK-NEXT: call void @bar(i32 [[X_0_1]])
-; CHECK-NEXT: ret void
-; CHECK: nope:
-; CHECK-NEXT: call void @foo(i1 [[XGT]])
-; CHECK-NEXT: call void @foo(i1 [[XLT]])
-; CHECK-NEXT: call void @foo(i1 [[Z_0]])
-; CHECK-NEXT: ret void
-;
- %xgt = icmp sgt i32 %x, 0
- %xlt = icmp slt i32 %x, 100
- %z = and i1 %xgt, %xlt
- br i1 %z, label %both, label %nope
-both:
- call void @foo(i1 %xgt)
- call void @foo(i1 %xlt)
- call void @bar(i32 %x)
- ret void
-nope:
- call void @foo(i1 %xgt)
- call void @foo(i1 %xlt)
- call void @foo(i1 %z)
- ret void
-}
-
-define void @testandassume(i32 %x, i32 %y) {
-; CHECK-LABEL: @testandassume(
-; CHECK-NEXT: [[XZ:%.*]] = icmp eq i32 [[X:%.*]], 0
-; CHECK-NEXT: [[YZ:%.*]] = icmp eq i32 [[Y:%.*]], 0
-; CHECK-NEXT: [[Z:%.*]] = and i1 [[XZ]], [[YZ]]
-; CHECK: [[TMP1:%.*]] = call i32 @llvm.ssa.copy.{{.+}}(i32 [[X]])
-; CHECK: [[TMP2:%.*]] = call i32 @llvm.ssa.copy.{{.+}}(i32 [[Y]])
-; CHECK: [[TMP3:%.*]] = call i1 @llvm.ssa.copy.{{.+}}(i1 [[XZ]])
-; CHECK: [[TMP4:%.*]] = call i1 @llvm.ssa.copy.{{.+}}(i1 [[YZ]])
-; CHECK: [[TMP5:%.*]] = call i1 @llvm.ssa.copy.{{.+}}(i1 [[Z]])
-; CHECK-NEXT: call void @llvm.assume(i1 [[TMP5]])
-; CHECK: [[DOT0:%.*]] = call i32 @llvm.ssa.copy.{{.+}}(i32 [[TMP1]])
-; CHECK: [[DOT01:%.*]] = call i32 @llvm.ssa.copy.{{.+}}(i32 [[TMP2]])
-; CHECK: [[DOT02:%.*]] = call i1 @llvm.ssa.copy.{{.+}}(i1 [[TMP3]])
-; CHECK: [[DOT03:%.*]] = call i1 @llvm.ssa.copy.{{.+}}(i1 [[TMP4]])
-; CHECK: [[DOT04:%.*]] = call i1 @llvm.ssa.copy.{{.+}}(i1 [[TMP5]])
-; CHECK-NEXT: br i1 [[TMP5]], label [[BOTH:%.*]], label [[NOPE:%.*]]
-; CHECK: both:
-; CHECK-NEXT: call void @foo(i1 [[DOT02]])
-; CHECK-NEXT: call void @foo(i1 [[DOT03]])
-; CHECK-NEXT: call void @bar(i32 [[DOT0]])
-; CHECK-NEXT: call void @bar(i32 [[DOT01]])
-; CHECK-NEXT: ret void
-; CHECK: nope:
-; CHECK-NEXT: call void @foo(i1 [[DOT04]])
-; CHECK-NEXT: ret void
-;
- %xz = icmp eq i32 %x, 0
- %yz = icmp eq i32 %y, 0
- %z = and i1 %xz, %yz
- call void @llvm.assume(i1 %z)
- br i1 %z, label %both, label %nope
-both:
- call void @foo(i1 %xz)
- call void @foo(i1 %yz)
- call void @bar(i32 %x)
- call void @bar(i32 %y)
- ret void
-nope:
- call void @foo(i1 %z)
- ret void
-}
-
-;; Unlike and/or for branches, assume is *always* true, so we only match and for it
-define void @testorassume(i32 %x, i32 %y) {
-;
-; CHECK-LABEL: @testorassume(
-; CHECK-NEXT: [[XZ:%.*]] = icmp eq i32 [[X:%.*]], 0
-; CHECK-NEXT: [[YZ:%.*]] = icmp eq i32 [[Y:%.*]], 0
-; CHECK-NEXT: [[Z:%.*]] = or i1 [[XZ]], [[YZ]]
-; CHECK-NEXT: call void @llvm.assume(i1 [[Z]])
-; CHECK: [[Z_0:%.*]] = call i1 @llvm.ssa.copy.{{.+}}(i1 [[Z]])
-; CHECK-NEXT: br i1 [[Z]], label [[BOTH:%.*]], label [[NOPE:%.*]]
-; CHECK: both:
-; CHECK-NEXT: call void @foo(i1 [[XZ]])
-; CHECK-NEXT: call void @foo(i1 [[YZ]])
-; CHECK-NEXT: call void @bar(i32 [[X]])
-; CHECK-NEXT: call void @bar(i32 [[Y]])
-; CHECK-NEXT: ret void
-; CHECK: nope:
-; CHECK-NEXT: call void @foo(i1 [[Z_0]])
-; CHECK-NEXT: ret void
-;
- %xz = icmp eq i32 %x, 0
- %yz = icmp eq i32 %y, 0
- %z = or i1 %xz, %yz
- call void @llvm.assume(i1 %z)
- br i1 %z, label %both, label %nope
-both:
- call void @foo(i1 %xz)
- call void @foo(i1 %yz)
- call void @bar(i32 %x)
- call void @bar(i32 %y)
- ret void
-nope:
- call void @foo(i1 %z)
- ret void
-}
diff --git a/llvm/test/Transforms/Util/PredicateInfo/unnamed-types.ll b/llvm/test/Transforms/Util/PredicateInfo/unnamed-types.ll
deleted file mode 100644
index 21e702178fd..00000000000
--- a/llvm/test/Transforms/Util/PredicateInfo/unnamed-types.ll
+++ /dev/null
@@ -1,36 +0,0 @@
-; RUN: opt < %s -print-predicateinfo 2>&1 | FileCheck %s
-
-%1 = type opaque
-%0 = type opaque
-
-; Check we can use ssa.copy with unnamed types.
-
-; CHECK-LABEL: bb:
-; CHECK: Has predicate info
-; CHECK: branch predicate info { TrueEdge: 1 Comparison: %cmp1 = icmp ne %0* %arg, null Edge: [label %bb,label %bb1] }
-; CHECK-NEXT: %arg.0 = call %0* @llvm.ssa.copy.{{.+}}(%0* %arg)
-
-; CHECK-LABEL: bb1:
-; CHECK: Has predicate info
-; CHECK-NEXT: branch predicate info { TrueEdge: 0 Comparison: %cmp2 = icmp ne %1* null, %tmp Edge: [label %bb1,label %bb3] }
-; CHECK-NEXT: %tmp.0 = call %1* @llvm.ssa.copy.{{.+}}(%1* %tmp)
-
-define void @f0(%0* %arg, %1* %tmp) {
-bb:
- %cmp1 = icmp ne %0* %arg, null
- br i1 %cmp1, label %bb1, label %bb2
-
-bb1: ; preds = %bb
- %cmp2 = icmp ne %1* null, %tmp
- br i1 %cmp2, label %bb2, label %bb3
-
-bb2: ; preds = %bb
- ret void
-
-bb3: ; preds = %bb
- %u1 = call i8* @fun(%1* %tmp)
- %tmp2 = bitcast %0* %arg to i8*
- ret void
-}
-
-declare i8* @fun(%1*)
diff --git a/llvm/test/Transforms/Util/call-promotion-utils-ptrcast-attribute.ll b/llvm/test/Transforms/Util/call-promotion-utils-ptrcast-attribute.ll
deleted file mode 100644
index 2b4c8c8e85f..00000000000
--- a/llvm/test/Transforms/Util/call-promotion-utils-ptrcast-attribute.ll
+++ /dev/null
@@ -1,32 +0,0 @@
-; RUN: opt -S -pgo-icall-prom -icp-total-percent-threshold=0 < %s 2>&1 | FileCheck %s
-
-; Test that CallPromotionUtils will promote calls which require pointer cast
-; safely, i.e. drop incompatible attributes.
-
-@foo = common global i8* (i8*)* null, align 8
-
-; casting to i64 and pointer attribute at callsite dropped.
-define i64 @func2(i64 %a) {
- ret i64 undef
-}
-
-; no casting needed, attribute at callsite preserved.
-define i8* @func4(i8* %a) {
- ret i8* undef
-}
-
-define i8* @bar(i8* %arg) {
- %tmp = load i8* (i8*)*, i8* (i8*)** @foo, align 8
-
-; Make sure callsite attributes are preserved on arguments and retval.
-; CHECK: call noalias i8* @func4(i8* nonnull
-
-; Make sure callsite attributes are dropped on arguments and retval.
-; CHECK: [[ARG:%[0-9]+]] = ptrtoint i8* %arg to i64
-; CHECK-NEXT: call i64 @func2(i64 [[ARG]])
-
- %call = call noalias i8* %tmp(i8* nonnull %arg), !prof !1
- ret i8* %call
-}
-
-!1 = !{!"VP", i32 0, i64 1440, i64 7651369219802541373, i64 1030, i64 -4377547752858689819, i64 410}
diff --git a/llvm/test/Transforms/Util/call-promotion-utils-ptrcast.ll b/llvm/test/Transforms/Util/call-promotion-utils-ptrcast.ll
deleted file mode 100644
index 351ec292f18..00000000000
--- a/llvm/test/Transforms/Util/call-promotion-utils-ptrcast.ll
+++ /dev/null
@@ -1,50 +0,0 @@
-; RUN: opt -S -pgo-icall-prom -icp-total-percent-threshold=0 -icp-max-prom=4 < %s 2>&1 | FileCheck %s
-
-; Test that CallPromotionUtils will promote calls which require pointer casts.
-
-@foo = common global i64 (i64)* null, align 8
-
-; Check ptrcast arguments.
-define i64 @func1(i8* %a) {
- ret i64 undef
-}
-
-; Check ptrcast return.
-define i8* @func2(i64 %a) {
- ret i8* undef
-}
-
-; Check ptrcast arguments and return.
-define i8* @func3(i8 *%a) {
- ret i8* undef
-}
-
-; Check mixed ptrcast and bitcast.
-define i8* @func4(double %f) {
- ret i8* undef
-}
-
-define i64 @bar() {
- %tmp = load i64 (i64)*, i64 (i64)** @foo, align 8
-
-; CHECK: [[ARG:%[0-9]+]] = bitcast i64 1 to double
-; CHECK-NEXT: [[RET:%[0-9]+]] = call i8* @func4(double [[ARG]])
-; CHECK-NEXT: ptrtoint i8* [[RET]] to i64
-
-; CHECK: [[RET:%[0-9]+]] = call i8* @func2(i64 1)
-; CHECK-NEXT: ptrtoint i8* [[RET]] to i64
-
-; CHECK: [[ARG:%[0-9]+]] = inttoptr i64 1 to i8*
-; CHECK-NEXT: [[RET:%[0-9]+]] = call i8* @func3(i8* [[ARG]])
-; CHECK-NEXT: ptrtoint i8* [[RET]] to i64
-
-; CHECK: [[ARG:%[0-9]+]] = inttoptr i64 1 to i8*
-; CHECK-NEXT: call i64 @func1(i8* [[ARG]])
-; CHECK-NOT: ptrtoint
-; CHECK-NOT: bitcast
-
- %call = call i64 %tmp(i64 1), !prof !1
- ret i64 %call
-}
-
-!1 = !{!"VP", i32 0, i64 1600, i64 7651369219802541373, i64 1030, i64 -4377547752858689819, i64 410, i64 -6929281286627296573, i64 150, i64 -2545542355363006406, i64 10}
diff --git a/llvm/test/Transforms/Util/clone-dicompileunit.ll b/llvm/test/Transforms/Util/clone-dicompileunit.ll
deleted file mode 100644
index 13a2abffa87..00000000000
--- a/llvm/test/Transforms/Util/clone-dicompileunit.ll
+++ /dev/null
@@ -1,66 +0,0 @@
-; RUN: opt -run-twice -verify -disable-debug-info-type-map -S -o - %s | FileCheck %s
-
-; Generated using:
-; $ cat p.cpp
-; void sink(void *);
-; class A {
-; public:
-; template <typename> void m_fn2() { static int a; }
-; virtual void m_fn1();
-; };
-; void foo() {
-; class B : public A {
-; public:
-; B() { m_fn2<B>(); }
-; };
-; sink(new B);
-; }
-; $ clang++ -target x86_64-unknown-linux -fvisibility=hidden -O2 -g2 -flto -S p.cpp -o p.ll
-; # then manually removed function/gv definitions
-
-; Test that when the module is cloned it does not contain a reference to
-; the original DICompileUnit as a result of a collision between the cloned
-; DISubprogram for m_fn2<B> (which refers to the non-ODR entity B via
-; template parameters) and the original DISubprogram.
-
-; CHECK: DICompileUnit
-; CHECK-NOT: DICompileUnit
-
-target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
-target triple = "x86_64-unknown-linux"
-
-!llvm.dbg.cu = !{!0}
-!llvm.module.flags = !{!28, !29}
-!llvm.ident = !{!30}
-
-!0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, file: !1, producer: "clang version 5.0.0 ", isOptimized: true, runtimeVersion: 0, emissionKind: FullDebug, enums: !2, globals: !3)
-!1 = !DIFile(filename: "p.cpp", directory: "/usr/local/google/home/pcc/b682773-2-repro/small2")
-!2 = !{}
-!3 = !{!4}
-!4 = !DIGlobalVariableExpression(var: !5, expr: !DIExpression())
-!5 = distinct !DIGlobalVariable(name: "a", scope: !6, file: !1, line: 5, type: !27, isLocal: true, isDefinition: true)
-!6 = distinct !DISubprogram(name: "m_fn2<B>", linkageName: "_ZN1A5m_fn2IZ3foovE1BEEvv", scope: !7, file: !1, line: 5, type: !8, isLocal: true, isDefinition: true, scopeLine: 5, flags: DIFlagPrototyped, isOptimized: true, unit: !0, templateParams: !11, declaration: !23, retainedNodes: !24)
-!7 = !DICompositeType(tag: DW_TAG_class_type, name: "A", file: !1, line: 3, flags: DIFlagFwdDecl, identifier: "_ZTS1A")
-!8 = !DISubroutineType(types: !9)
-!9 = !{null, !10}
-!10 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !7, size: 64, flags: DIFlagArtificial | DIFlagObjectPointer)
-!11 = !{!12}
-!12 = !DITemplateTypeParameter(type: !13)
-!13 = distinct !DICompositeType(tag: DW_TAG_class_type, name: "B", scope: !14, file: !1, line: 10, size: 64, elements: !17, vtableHolder: !7)
-!14 = distinct !DISubprogram(name: "foo", linkageName: "_Z3foov", scope: !1, file: !1, line: 9, type: !15, isLocal: false, isDefinition: true, scopeLine: 9, flags: DIFlagPrototyped, isOptimized: true, unit: !0, retainedNodes: !2)
-!15 = !DISubroutineType(types: !16)
-!16 = !{null}
-!17 = !{!18, !19}
-!18 = !DIDerivedType(tag: DW_TAG_inheritance, scope: !13, baseType: !7, flags: DIFlagPublic)
-!19 = !DISubprogram(name: "B", scope: !13, file: !1, line: 12, type: !20, isLocal: false, isDefinition: false, scopeLine: 12, flags: DIFlagPublic | DIFlagPrototyped, isOptimized: true)
-!20 = !DISubroutineType(types: !21)
-!21 = !{null, !22}
-!22 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !13, size: 64, flags: DIFlagArtificial | DIFlagObjectPointer)
-!23 = !DISubprogram(name: "m_fn2<B>", linkageName: "_ZN1A5m_fn2IZ3foovE1BEEvv", scope: !7, file: !1, line: 5, type: !8, isLocal: false, isDefinition: false, scopeLine: 5, flags: DIFlagPublic | DIFlagPrototyped, isOptimized: true, templateParams: !11)
-!24 = !{!25}
-!25 = !DILocalVariable(name: "this", arg: 1, scope: !6, type: !26, flags: DIFlagArtificial | DIFlagObjectPointer)
-!26 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !7, size: 64)
-!27 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed)
-!28 = !{i32 2, !"Dwarf Version", i32 4}
-!29 = !{i32 2, !"Debug Info Version", i32 3}
-!30 = !{!"clang version 5.0.0 "}
diff --git a/llvm/test/Transforms/Util/combine-alias-scope-metadata.ll b/llvm/test/Transforms/Util/combine-alias-scope-metadata.ll
deleted file mode 100644
index f58e4f783b0..00000000000
--- a/llvm/test/Transforms/Util/combine-alias-scope-metadata.ll
+++ /dev/null
@@ -1,24 +0,0 @@
-; RUN: opt < %s -S -basicaa -memcpyopt | FileCheck %s
-target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
-
-define void @test(i8* noalias dereferenceable(1) %in, i8* noalias dereferenceable(1) %out) {
- %tmp = alloca i8
- %tmp2 = alloca i8
-; CHECK: call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %out, i8* align 8 %in, i64 1, i1 false)
- call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %tmp, i8* align 8 %in, i64 1, i1 false), !alias.scope !4
- call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %tmp2, i8* align 8 %tmp, i64 1, i1 false), !alias.scope !5
-
- call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %out, i8* align 8 %tmp2, i64 1, i1 false), !noalias !6
-
- ret void
-}
-
-declare void @llvm.memcpy.p0i8.p0i8.i64(i8*, i8*, i64, i1)
-
-!0 = !{!0}
-!1 = distinct !{!1, !0, !"in"}
-!2 = distinct !{!2, !0, !"tmp"}
-!3 = distinct !{!3, !0, !"tmp2"}
-!4 = distinct !{!1, !2}
-!5 = distinct !{!2, !3}
-!6 = distinct !{!1, !2}
diff --git a/llvm/test/Transforms/Util/dbg-user-of-aext.ll b/llvm/test/Transforms/Util/dbg-user-of-aext.ll
deleted file mode 100644
index 9a310669389..00000000000
--- a/llvm/test/Transforms/Util/dbg-user-of-aext.ll
+++ /dev/null
@@ -1,87 +0,0 @@
-; Checks that llvm.dbg.declare -> llvm.dbg.value conversion utility
-; (here exposed through the SROA) pass refers to [s|z]exts of values (as
-; opposed to the operand of a [s|z]ext).
-; RUN: opt -S -sroa %s | FileCheck %s
-
-; Built from:
-; struct foo { bool b; long i; };
-; void f(bool b, bool expr, foo g) {
-; }
-; And modifying the frag dbg.declare to use a fragmented DIExpression (with offset: 0, size: 4)
-; to test the dbg.declare+fragment case here.
-
-; Expect two fragments:
-; * first starting at bit 0, 8 bits (for the bool)
-; * second starting at bit 32, 32 bits (for the long)
-; (this happens to create/demonstrate a gap from bits [7, 32))
-
-; But also check that a complex expression is not used for a lone bool
-; parameter. It can reference the register it's in directly without masking off
-; high bits or anything
-
-; CHECK: call void @llvm.dbg.value(metadata i8 %g.coerce0, metadata ![[VAR_STRUCT:[0-9]+]], metadata !DIExpression(DW_OP_LLVM_fragment, 0, 8))
-; CHECK: call void @llvm.dbg.value(metadata i64 %g.coerce1, metadata ![[VAR_STRUCT]], metadata !DIExpression(DW_OP_LLVM_fragment, 32, 64))
-; CHECK: call void @llvm.dbg.value(metadata i8 %frombool, metadata ![[VAR_BOOL:[0-9]+]], metadata !DIExpression())
-; CHECK: call void @llvm.dbg.value(metadata i8 %frombool1, metadata ![[VAR_FRAG:[0-9]+]], metadata !DIExpression(DW_OP_LLVM_fragment, 0, 4))
-
-%struct.foo = type { i8, i64 }
-
-; Function Attrs: noinline nounwind uwtable
-define void @_Z1fbb3foo(i1 zeroext %b, i1 zeroext %frag, i8 %g.coerce0, i64 %g.coerce1) #0 !dbg !6 {
-entry:
- %g = alloca %struct.foo, align 8
- %b.addr = alloca i8, align 1
- %frag.addr = alloca i8, align 1
- %0 = bitcast %struct.foo* %g to { i8, i64 }*
- %1 = getelementptr inbounds { i8, i64 }, { i8, i64 }* %0, i32 0, i32 0
- store i8 %g.coerce0, i8* %1, align 8
- %2 = getelementptr inbounds { i8, i64 }, { i8, i64 }* %0, i32 0, i32 1
- store i64 %g.coerce1, i64* %2, align 8
- %frombool = zext i1 %b to i8
- store i8 %frombool, i8* %b.addr, align 1
- call void @llvm.dbg.declare(metadata i8* %b.addr, metadata !15, metadata !16), !dbg !17
- %frombool1 = sext i1 %frag to i8
- store i8 %frombool1, i8* %frag.addr, align 1
- call void @llvm.dbg.declare(metadata i8* %frag.addr, metadata !18, metadata !23), !dbg !19
- call void @llvm.dbg.declare(metadata %struct.foo* %g, metadata !20, metadata !16), !dbg !21
- ret void, !dbg !22
-}
-
-; CHECK: ![[VAR_STRUCT]] = !DILocalVariable(name: "g"
-; CHECK: ![[VAR_BOOL]] = !DILocalVariable(name: "b"
-; CHECK: ![[VAR_FRAG]] = !DILocalVariable(name: "frag"
-
-; Function Attrs: nounwind readnone speculatable
-declare void @llvm.dbg.declare(metadata, metadata, metadata) #1
-
-attributes #0 = { noinline nounwind uwtable "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" }
-attributes #1 = { nounwind readnone speculatable }
-
-!llvm.dbg.cu = !{!0}
-!llvm.module.flags = !{!3, !4}
-!llvm.ident = !{!5}
-
-!0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, file: !1, producer: "clang version 5.0.0 (trunk 303077) (llvm/trunk 303098)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !2)
-!1 = !DIFile(filename: "foo.cpp", directory: "/usr/local/google/home/blaikie/dev/scratch")
-!2 = !{}
-!3 = !{i32 2, !"Dwarf Version", i32 4}
-!4 = !{i32 2, !"Debug Info Version", i32 3}
-!5 = !{!"clang version 5.0.0 (trunk 303077) (llvm/trunk 303098)"}
-!6 = distinct !DISubprogram(name: "f", linkageName: "_Z1fbb3foo", scope: !1, file: !1, line: 2, type: !7, isLocal: false, isDefinition: true, scopeLine: 2, flags: DIFlagPrototyped, isOptimized: false, unit: !0, retainedNodes: !2)
-!7 = !DISubroutineType(types: !8)
-!8 = !{null, !9, !9, !10}
-!9 = !DIBasicType(name: "bool", size: 8, encoding: DW_ATE_boolean)
-!10 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "foo", file: !1, line: 1, size: 128, elements: !11, identifier: "_ZTS3foo")
-!11 = !{!12, !13}
-!12 = !DIDerivedType(tag: DW_TAG_member, name: "b", scope: !10, file: !1, line: 1, baseType: !9, size: 8)
-!13 = !DIDerivedType(tag: DW_TAG_member, name: "i", scope: !10, file: !1, line: 1, baseType: !14, size: 64, offset: 64)
-!14 = !DIBasicType(name: "long int", size: 64, encoding: DW_ATE_signed)
-!15 = !DILocalVariable(name: "b", arg: 1, scope: !6, file: !1, line: 2, type: !9)
-!16 = !DIExpression()
-!17 = !DILocation(line: 2, column: 13, scope: !6)
-!18 = !DILocalVariable(name: "frag", arg: 2, scope: !6, file: !1, line: 2, type: !9)
-!19 = !DILocation(line: 2, column: 21, scope: !6)
-!20 = !DILocalVariable(name: "g", arg: 3, scope: !6, file: !1, line: 2, type: !10)
-!21 = !DILocation(line: 2, column: 31, scope: !6)
-!22 = !DILocation(line: 3, column: 1, scope: !6)
-!23 = !DIExpression(DW_OP_LLVM_fragment, 0, 4)
diff --git a/llvm/test/Transforms/Util/flattencfg.ll b/llvm/test/Transforms/Util/flattencfg.ll
deleted file mode 100644
index 4fcb77ab023..00000000000
--- a/llvm/test/Transforms/Util/flattencfg.ll
+++ /dev/null
@@ -1,26 +0,0 @@
-; RUN: opt -flattencfg -S < %s | FileCheck %s
-
-
-; This test checks whether the pass completes without a crash.
-; The code is not transformed in any way
-;
-; CHECK-LABEL: @test_not_crash
-define void @test_not_crash(i32 %in_a) #0 {
-entry:
- %cmp0 = icmp eq i32 %in_a, -1
- %cmp1 = icmp ne i32 %in_a, 0
- %cond0 = and i1 %cmp0, %cmp1
- br i1 %cond0, label %b0, label %b1
-
-b0: ; preds = %entry
- %cmp2 = icmp eq i32 %in_a, 0
- %cmp3 = icmp ne i32 %in_a, 1
- %cond1 = or i1 %cmp2, %cmp3
- br i1 %cond1, label %exit, label %b1
-
-b1: ; preds = %entry, %b0
- br label %exit
-
-exit: ; preds = %entry, %b0, %b1
- ret void
-}
diff --git a/llvm/test/Transforms/Util/libcalls-fast-math-inf-loop.ll b/llvm/test/Transforms/Util/libcalls-fast-math-inf-loop.ll
deleted file mode 100644
index a351fe82173..00000000000
--- a/llvm/test/Transforms/Util/libcalls-fast-math-inf-loop.ll
+++ /dev/null
@@ -1,60 +0,0 @@
-; RUN: opt -S -instcombine -o - %s | FileCheck %s
-
-; Test that fast math lib call simplification of double math function to float
-; equivalent doesn't occur when the calling function matches the float
-; equivalent math function. Otherwise this can cause the generation of infinite
-; loops when compiled with -O2/3 and fast math.
-
-; Test case C source:
-;
-; extern double exp(double x);
-; inline float expf(float x) { return (float) exp((double) x); }
-; float fn(float f) { return expf(f); }
-;
-; IR generated with command:
-;
-; clang -cc1 -O2 -ffast-math -emit-llvm -disable-llvm-passes -triple x86_64-unknown-unknown -o - <srcfile>
-
-target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
-target triple = "x86_64-unknown-unknown"
-
-; Function Attrs: nounwind
-define float @fn(float %f) #0 {
-; CHECK: define float @fn(
-; CHECK: call fast float @expf(
- %f.addr = alloca float, align 4
- store float %f, float* %f.addr, align 4, !tbaa !1
- %1 = load float, float* %f.addr, align 4, !tbaa !1
- %call = call fast float @expf(float %1) #3
- ret float %call
-}
-
-; Function Attrs: inlinehint nounwind readnone
-define available_externally float @expf(float %x) #1 {
-; CHECK: define available_externally float @expf(
-; CHECK: fpext float
-; CHECK: call fast double @exp(
-; CHECK: fptrunc double
- %x.addr = alloca float, align 4
- store float %x, float* %x.addr, align 4, !tbaa !1
- %1 = load float, float* %x.addr, align 4, !tbaa !1
- %conv = fpext float %1 to double
- %call = call fast double @exp(double %conv) #3
- %conv1 = fptrunc double %call to float
- ret float %conv1
-}
-
-; Function Attrs: nounwind readnone
-declare double @exp(double) #2
-
-attributes #0 = { nounwind "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-features"="+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" }
-attributes #1 = { inlinehint nounwind readnone "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-features"="+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" }
-attributes #2 = { nounwind readnone }
-
-!llvm.ident = !{!0}
-
-!0 = !{!"clang version 5.0.0"}
-!1 = !{!2, !2, i64 0}
-!2 = !{!"float", !3, i64 0}
-!3 = !{!"omnipotent char", !4, i64 0}
-!4 = !{!"Simple C/C++ TBAA"}
diff --git a/llvm/test/Transforms/Util/libcalls-opt-remarks.ll b/llvm/test/Transforms/Util/libcalls-opt-remarks.ll
deleted file mode 100644
index 4d44e6dd24d..00000000000
--- a/llvm/test/Transforms/Util/libcalls-opt-remarks.ll
+++ /dev/null
@@ -1,57 +0,0 @@
-; RUN: opt < %s -instcombine -o /dev/null -pass-remarks-output=%t -S \
-; RUN: -pass-remarks=instcombine 2>&1 | FileCheck %s
-; RUN: cat %t | FileCheck -check-prefix=YAML %s
-; RUN: opt < %s -passes='require<opt-remark-emit>,instcombine' -o /dev/null \
-; RUN: -pass-remarks-output=%t -S -pass-remarks=instcombine 2>&1 | FileCheck %s
-; RUN: cat %t | FileCheck -check-prefix=YAML %s
-
-; CHECK: remark: libcalls-opt-remarks.c:10:10: folded strlen(select) to select of constants{{$}}
-; CHECK-NOT: remark:
-
-; YAML: --- !Passed
-; YAML-NEXT: Pass: instcombine
-; YAML-NEXT: Name: simplify-libcalls
-; YAML-NEXT: DebugLoc: { File: libcalls-opt-remarks.c, Line: 10, Column: 10 }
-; YAML-NEXT: Function: f1
-; YAML-NEXT: Args:
-; YAML-NEXT: - String: 'folded strlen(select) to select of constants'
-; YAML-NEXT: ...
-
-target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:128:128"
-
-declare i32 @strlen(i8*)
-
-@hello = constant [6 x i8] c"hello\00"
-@longer = constant [7 x i8] c"longer\00"
-
-define i32 @f1(i1) !dbg !7 {
- %hello = getelementptr [6 x i8], [6 x i8]* @hello, i32 0, i32 0, !dbg !10
- %longer = getelementptr [7 x i8], [7 x i8]* @longer, i32 0, i32 0, !dbg !12
- %2 = select i1 %0, i8* %hello, i8* %longer, !dbg !9
- %3 = call i32 @strlen(i8* %2), !dbg !14
- ret i32 %3, !dbg !16
-}
-
-
-
-!llvm.dbg.cu = !{!0}
-!llvm.module.flags = !{!3, !4, !5}
-!llvm.ident = !{!6}
-
-!0 = distinct !DICompileUnit(language: DW_LANG_C99, file: !1, producer: "Apple LLVM version 8.1.0 (clang-802.0.42)", isOptimized: true, runtimeVersion: 0, emissionKind: LineTablesOnly, enums: !2)
-!1 = !DIFile(filename: "libcalls-opt-remarks.c", directory: "/tmp")
-!2 = !{}
-!3 = !{i32 2, !"Dwarf Version", i32 4}
-!4 = !{i32 2, !"Debug Info Version", i32 3}
-!5 = !{i32 1, !"PIC Level", i32 2}
-!6 = !{!"Apple LLVM version 8.1.0 (clang-802.0.42)"}
-!7 = distinct !DISubprogram(name: "f1", scope: !1, file: !1, line: 9, type: !8, isLocal: false, isDefinition: true, scopeLine: 9, flags: DIFlagPrototyped, isOptimized: true, unit: !0, retainedNodes: !2)
-!8 = !DISubroutineType(types: !2)
-!9 = !DILocation(line: 10, column: 17, scope: !7)
-!10 = !DILocation(line: 10, column: 24, scope: !11)
-!11 = !DILexicalBlockFile(scope: !7, file: !1, discriminator: 1)
-!12 = !DILocation(line: 10, column: 32, scope: !13)
-!13 = !DILexicalBlockFile(scope: !7, file: !1, discriminator: 2)
-!14 = !DILocation(line: 10, column: 10, scope: !15)
-!15 = !DILexicalBlockFile(scope: !7, file: !1, discriminator: 3)
-!16 = !DILocation(line: 10, column: 3, scope: !15)
diff --git a/llvm/test/Transforms/Util/libcalls-shrinkwrap-double.ll b/llvm/test/Transforms/Util/libcalls-shrinkwrap-double.ll
deleted file mode 100644
index d015a9d4d60..00000000000
--- a/llvm/test/Transforms/Util/libcalls-shrinkwrap-double.ll
+++ /dev/null
@@ -1,241 +0,0 @@
-; RUN: opt < %s -libcalls-shrinkwrap -S | FileCheck %s
-; New PM
-; RUN: opt < %s -passes=libcalls-shrinkwrap -S | FileCheck %s
-
-target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
-target triple = "x86_64-unknown-linux-gnu"
-
-define void @test_range_error(double %value) {
-entry:
- %call_0 = call double @cosh(double %value)
-; CHECK: [[COND1:%[0-9]+]] = fcmp olt double %value, -7.100000e+02
-; CHECK: [[COND2:%[0-9]+]] = fcmp ogt double %value, 7.100000e+02
-; CHECK: [[COND:%[0-9]+]] = or i1 [[COND2]], [[COND1]]
-; CHECK: br i1 [[COND]], label %[[CALL_LABEL:cdce.call[0-9]*]], label %[[END_LABEL:cdce.end[0-9]*]], !prof ![[BRANCH_WEIGHT:[0-9]+]]
-; CHECK: [[CALL_LABEL]]:
-; CHECK-NEXT: %call_0 = call double @cosh(double %value)
-; CHECK-NEXT: br label %[[END_LABEL]]
-; CHECK: [[END_LABEL]]:
-
- %call_1 = call double @exp(double %value)
-; CHECK: [[COND1:%[0-9]+]] = fcmp olt double %value, -7.450000e+02
-; CHECK: [[COND2:%[0-9]+]] = fcmp ogt double %value, 7.090000e+02
-; CHECK: [[COND:%[0-9]+]] = or i1 [[COND2]], [[COND1]]
-; CHECK: br i1 [[COND]], label %[[CALL_LABEL:cdce.call[0-9]*]], label %[[END_LABEL:cdce.end[0-9]*]], !prof ![[BRANCH_WEIGHT]]
-; CHECK: [[CALL_LABEL]]:
-; CHECK-NEXT: %call_1 = call double @exp(double %value)
-; CHECK-NEXT: br label %[[END_LABEL]]
-; CHECK: [[END_LABEL]]:
-
- %call_3 = call double @exp2(double %value)
-; CHECK: [[COND1:%[0-9]+]] = fcmp olt double %value, -1.074000e+03
-; CHECK: [[COND2:%[0-9]+]] = fcmp ogt double %value, 1.023000e+03
-; CHECK: [[COND:%[0-9]+]] = or i1 [[COND2]], [[COND1]]
-; CHECK: br i1 [[COND]], label %[[CALL_LABEL:cdce.call[0-9]*]], label %[[END_LABEL:cdce.end[0-9]*]], !prof ![[BRANCH_WEIGHT]]
-; CHECK: [[CALL_LABEL]]:
-; CHECK-NEXT: %call_3 = call double @exp2(double %value)
-; CHECK-NEXT: br label %[[END_LABEL]]
-; CHECK: [[END_LABEL]]:
-
- %call_4 = call double @sinh(double %value)
-; CHECK: [[COND1:%[0-9]+]] = fcmp olt double %value, -7.100000e+02
-; CHECK: [[COND2:%[0-9]+]] = fcmp ogt double %value, 7.100000e+02
-; CHECK: [[COND:%[0-9]+]] = or i1 [[COND2]], [[COND1]]
-; CHECK: br i1 [[COND]], label %[[CALL_LABEL:cdce.call[0-9]*]], label %[[END_LABEL:cdce.end[0-9]*]], !prof ![[BRANCH_WEIGHT]]
-; CHECK: [[CALL_LABEL]]:
-; CHECK-NEXT: %call_4 = call double @sinh(double %value)
-; CHECK-NEXT: br label %[[END_LABEL]]
-; CHECK: [[END_LABEL]]:
-
- %call_5 = call double @expm1(double %value)
-; CHECK: [[COND:%[0-9]+]] = fcmp ogt double %value, 7.090000e+02
-; CHECK: br i1 [[COND]], label %[[CALL_LABEL:cdce.call[0-9]*]], label %[[END_LABEL:cdce.end[0-9]*]], !prof ![[BRANCH_WEIGHT]]
-; CHECK: [[CALL_LABEL]]:
-; CHECK-NEXT: %call_5 = call double @expm1(double %value)
-; CHECK-NEXT: br label %[[END_LABEL]]
-; CHECK: [[END_LABEL]]:
-
- ret void
-}
-
-declare double @cosh(double)
-declare double @exp(double)
-declare double @exp2(double)
-declare double @sinh(double)
-declare double @expm1(double)
-
-define void @test_domain_error(double %value) {
-entry:
- %call_00 = call double @acos(double %value)
-; CHECK: [[COND1:%[0-9]+]] = fcmp ogt double %value, 1.000000e+00
-; CHECK: [[COND2:%[0-9]+]] = fcmp olt double %value, -1.000000e+00
-; CHECK: [[COND:%[0-9]+]] = or i1 [[COND2]], [[COND1]]
-; CHECK: br i1 [[COND]], label %[[CALL_LABEL:cdce.call[0-9]*]], label %[[END_LABEL:cdce.end[0-9]*]], !prof ![[BRANCH_WEIGHT]]
-; CHECK: [[CALL_LABEL]]:
-; CHECK-NEXT: %call_00 = call double @acos(double %value)
-; CHECK-NEXT: br label %[[END_LABEL]]
-; CHECK: [[END_LABEL]]:
-
- %call_01 = call double @asin(double %value)
-; CHECK: [[COND1:%[0-9]+]] = fcmp ogt double %value, 1.000000e+00
-; CHECK: [[COND2:%[0-9]+]] = fcmp olt double %value, -1.000000e+00
-; CHECK: [[COND:%[0-9]+]] = or i1 [[COND2]], [[COND1]]
-; CHECK: br i1 [[COND]], label %[[CALL_LABEL:cdce.call[0-9]*]], label %[[END_LABEL:cdce.end[0-9]*]], !prof ![[BRANCH_WEIGHT]]
-; CHECK: [[CALL_LABEL]]:
-; CHECK-NEXT: %call_01 = call double @asin(double %value)
-; CHECK-NEXT: br label %[[END_LABEL]]
-; CHECK: [[END_LABEL]]:
-
- %call_02 = call double @cos(double %value)
-; CHECK: [[COND1:%[0-9]+]] = fcmp oeq double %value, 0xFFF0000000000000
-; CHECK: [[COND2:%[0-9]+]] = fcmp oeq double %value, 0x7FF0000000000000
-; CHECK: [[COND:%[0-9]+]] = or i1 [[COND2]], [[COND1]]
-; CHECK: br i1 [[COND]], label %[[CALL_LABEL:cdce.call[0-9]*]], label %[[END_LABEL:cdce.end[0-9]*]], !prof ![[BRANCH_WEIGHT]]
-; CHECK: [[CALL_LABEL]]:
-; CHECK-NEXT: %call_02 = call double @cos(double %value)
-; CHECK-NEXT: br label %[[END_LABEL]]
-; CHECK: [[END_LABEL]]:
-
- %call_03 = call double @sin(double %value)
-; CHECK: [[COND1:%[0-9]+]] = fcmp oeq double %value, 0xFFF0000000000000
-; CHECK: [[COND2:%[0-9]+]] = fcmp oeq double %value, 0x7FF0000000000000
-; CHECK: [[COND:%[0-9]+]] = or i1 [[COND2]], [[COND1]]
-; CHECK: br i1 [[COND]], label %[[CALL_LABEL:cdce.call[0-9]*]], label %[[END_LABEL:cdce.end[0-9]*]], !prof ![[BRANCH_WEIGHT]]
-; CHECK: [[CALL_LABEL]]:
-; CHECK-NEXT: %call_03 = call double @sin(double %value)
-; CHECK-NEXT: br label %[[END_LABEL]]
-; CHECK: [[END_LABEL]]:
-
- %call_04 = call double @acosh(double %value)
-; CHECK: [[COND:%[0-9]+]] = fcmp olt double %value, 1.000000e+00
-; CHECK: br i1 [[COND]], label %[[CALL_LABEL:cdce.call[0-9]*]], label %[[END_LABEL:cdce.end[0-9]*]], !prof ![[BRANCH_WEIGHT]]
-; CHECK: [[CALL_LABEL]]:
-; CHECK-NEXT: %call_04 = call double @acosh(double %value)
-; CHECK-NEXT: br label %[[END_LABEL]]
-; CHECK: [[END_LABEL]]:
-
- %call_05 = call double @sqrt(double %value)
-; CHECK: [[COND:%[0-9]+]] = fcmp olt double %value, 0.000000e+00
-; CHECK: br i1 [[COND]], label %[[CALL_LABEL:cdce.call[0-9]*]], label %[[END_LABEL:cdce.end[0-9]*]], !prof ![[BRANCH_WEIGHT]]
-; CHECK: [[CALL_LABEL]]:
-; CHECK-NEXT: %call_05 = call double @sqrt(double %value)
-; CHECK-NEXT: br label %[[END_LABEL]]
-; CHECK: [[END_LABEL]]:
-
- %call_06 = call double @atanh(double %value)
-; CHECK: [[COND1:%[0-9]+]] = fcmp oge double %value, 1.000000e+00
-; CHECK: [[COND2:%[0-9]+]] = fcmp ole double %value, -1.000000e+00
-; CHECK: [[COND:%[0-9]+]] = or i1 [[COND2]], [[COND1]]
-; CHECK: br i1 [[COND]], label %[[CALL_LABEL:cdce.call[0-9]*]], label %[[END_LABEL:cdce.end[0-9]*]], !prof ![[BRANCH_WEIGHT]]
-; CHECK: [[CALL_LABEL]]:
-; CHECK-NEXT: %call_06 = call double @atanh(double %value)
-; CHECK-NEXT: br label %[[END_LABEL]]
-; CHECK: [[END_LABEL]]:
-
- %call_07 = call double @log(double %value)
-; CHECK: [[COND:%[0-9]+]] = fcmp ole double %value, 0.000000e+00
-; CHECK: br i1 [[COND]], label %[[CALL_LABEL:cdce.call[0-9]*]], label %[[END_LABEL:cdce.end[0-9]*]], !prof ![[BRANCH_WEIGHT]]
-; CHECK: [[CALL_LABEL]]:
-; CHECK-NEXT: %call_07 = call double @log(double %value)
-; CHECK-NEXT: br label %[[END_LABEL]]
-; CHECK: [[END_LABEL]]:
-
- %call_08 = call double @log10(double %value)
-; CHECK: [[COND:%[0-9]+]] = fcmp ole double %value, 0.000000e+00
-; CHECK: br i1 [[COND]], label %[[CALL_LABEL:cdce.call[0-9]*]], label %[[END_LABEL:cdce.end[0-9]*]], !prof ![[BRANCH_WEIGHT]]
-; CHECK: [[CALL_LABEL]]:
-; CHECK-NEXT: %call_08 = call double @log10(double %value)
-; CHECK-NEXT: br label %[[END_LABEL]]
-; CHECK: [[END_LABEL]]:
-
- %call_09 = call double @log2(double %value)
-; CHECK: [[COND:%[0-9]+]] = fcmp ole double %value, 0.000000e+00
-; CHECK: br i1 [[COND]], label %[[CALL_LABEL:cdce.call[0-9]*]], label %[[END_LABEL:cdce.end[0-9]*]], !prof ![[BRANCH_WEIGHT]]
-; CHECK: [[CALL_LABEL]]:
-; CHECK-NEXT: %call_09 = call double @log2(double %value)
-; CHECK-NEXT: br label %[[END_LABEL]]
-; CHECK: [[END_LABEL]]:
-
- %call_10 = call double @logb(double %value)
-; CHECK: [[COND:%[0-9]+]] = fcmp ole double %value, 0.000000e+00
-; CHECK: br i1 [[COND]], label %[[CALL_LABEL:cdce.call[0-9]*]], label %[[END_LABEL:cdce.end[0-9]*]], !prof ![[BRANCH_WEIGHT]]
-; CHECK: [[CALL_LABEL]]:
-; CHECK-NEXT: %call_10 = call double @logb(double %value)
-; CHECK-NEXT: br label %[[END_LABEL]]
-; CHECK: [[END_LABEL]]:
-
- %call_11 = call double @log1p(double %value)
-; CHECK: [[COND:%[0-9]+]] = fcmp ole double %value, -1.000000e+00
-; CHECK: br i1 [[COND]], label %[[CALL_LABEL:cdce.call[0-9]*]], label %[[END_LABEL:cdce.end[0-9]*]], !prof ![[BRANCH_WEIGHT]]
-; CHECK: [[CALL_LABEL]]:
-; CHECK-NEXT: %call_11 = call double @log1p(double %value)
-; CHECK-NEXT: br label %[[END_LABEL]]
-; CHECK: [[END_LABEL]]:
-
- ret void
-}
-
-declare double @acos(double)
-declare double @asin(double)
-declare double @cos(double)
-declare double @sin(double)
-declare double @acosh(double)
-declare double @sqrt(double)
-declare double @atanh(double)
-declare double @log(double)
-declare double @log10(double)
-declare double @log2(double)
-declare double @logb(double)
-declare double @log1p(double)
-
-define void @test_pow(i32 %int_val, double %exp) {
- %call = call double @pow(double 2.500000e+00, double %exp)
-; CHECK: [[COND:%[0-9]+]] = fcmp ogt double %exp, 1.270000e+02
-; CHECK: br i1 [[COND]], label %[[CALL_LABEL:cdce.call[0-9]*]], label %[[END_LABEL:cdce.end[0-9]*]], !prof ![[BRANCH_WEIGHT]]
-; CHECK: [[CALL_LABEL]]:
-; CHECK-NEXT: %call = call double @pow(double 2.500000e+00, double %exp)
-; CHECK-NEXT: br label %[[END_LABEL]]
-; CHECK: [[END_LABEL]]:
-
- %conv = sitofp i32 %int_val to double
- %call1 = call double @pow(double %conv, double %exp)
-; CHECK: [[COND1:%[0-9]+]] = fcmp ogt double %exp, 3.200000e+01
-; CHECK: [[COND2:%[0-9]+]] = fcmp ole double %conv, 0.000000e+00
-; CHECK: [[COND:%[0-9]+]] = or i1 [[COND2]], [[COND1]]
-; CHECK: br i1 [[COND]], label %[[CALL_LABEL:cdce.call[0-9]*]], label %[[END_LABEL:cdce.end[0-9]*]], !prof ![[BRANCH_WEIGHT]]
-; CHECK: [[CALL_LABEL]]:
-; CHECK-NEXT: %call1 = call double @pow(double %conv, double %exp)
-; CHECK-NEXT: br label %[[END_LABEL]]
-; CHECK: [[END_LABEL]]:
-
- %conv2 = trunc i32 %int_val to i8
- %conv3 = uitofp i8 %conv2 to double
- %call4 = call double @pow(double %conv3, double %exp)
-; CHECK: [[COND1:%[0-9]+]] = fcmp ogt double %exp, 1.280000e+02
-; CHECK: [[COND2:%[0-9]+]] = fcmp ole double %conv3, 0.000000e+00
-; CHECK: [[COND:%[0-9]+]] = or i1 [[COND2]], [[COND1]]
-; CHECK: br i1 [[COND]], label %[[CALL_LABEL:cdce.call[0-9]*]], label %[[END_LABEL:cdce.end[0-9]*]], !prof ![[BRANCH_WEIGHT]]
-; CHECK: [[CALL_LABEL]]:
-; CHECK-NEXT: %call4 = call double @pow(double %conv3, double %exp)
-; CHECK-NEXT: br label %[[END_LABEL]]
-; CHECK: [[END_LABEL]]:
-
-
- %conv5 = trunc i32 %int_val to i16
- %conv6 = uitofp i16 %conv5 to double
- %call7 = call double @pow(double %conv6, double %exp)
-; CHECK: [[COND1:%[0-9]+]] = fcmp ogt double %exp, 6.400000e+01
-; CHECK: [[COND2:%[0-9]+]] = fcmp ole double %conv6, 0.000000e+00
-; CHECK: [[COND:%[0-9]+]] = or i1 [[COND2]], [[COND1]]
-; CHECK: br i1 [[COND]], label %[[CALL_LABEL:cdce.call[0-9]*]], label %[[END_LABEL:cdce.end[0-9]*]], !prof ![[BRANCH_WEIGHT]]
-; CHECK: [[CALL_LABEL]]:
-; CHECK-NEXT: %call7 = call double @pow(double %conv6, double %exp)
-; CHECK-NEXT: br label %[[END_LABEL]]
-; CHECK: [[END_LABEL]]:
-
- ret void
-}
-
-declare double @pow(double, double)
-
-; CHECK: ![[BRANCH_WEIGHT]] = !{!"branch_weights", i32 1, i32 2000}
diff --git a/llvm/test/Transforms/Util/libcalls-shrinkwrap-float.ll b/llvm/test/Transforms/Util/libcalls-shrinkwrap-float.ll
deleted file mode 100644
index 4affc006e38..00000000000
--- a/llvm/test/Transforms/Util/libcalls-shrinkwrap-float.ll
+++ /dev/null
@@ -1,191 +0,0 @@
-; RUN: opt < %s -libcalls-shrinkwrap -S | FileCheck %s
-; New PM
-; RUN: opt < %s -passes=libcalls-shrinkwrap -S | FileCheck %s
-
-target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
-target triple = "x86_64-unknown-linux-gnu"
-
-define void @test_range_error(float %value) {
-entry:
- %call_0 = call float @coshf(float %value)
-; CHECK: [[COND1:%[0-9]+]] = fcmp olt float %value, -8.900000e+01
-; CHECK: [[COND2:%[0-9]+]] = fcmp ogt float %value, 8.900000e+01
-; CHECK: [[COND:%[0-9]+]] = or i1 [[COND2]], [[COND1]]
-; CHECK: br i1 [[COND]], label %[[CALL_LABEL:cdce.call[0-9]*]], label %[[END_LABEL:cdce.end[0-9]*]], !prof ![[BRANCH_WEIGHT:[0-9]+]]
-; CHECK: [[CALL_LABEL]]:
-; CHECK-NEXT: %call_0 = call float @coshf(float %value)
-; CHECK-NEXT: br label %[[END_LABEL]]
-; CHECK: [[END_LABEL]]:
-
- %call_1 = call float @expf(float %value)
-; CHECK: [[COND1:%[0-9]+]] = fcmp olt float %value, -1.030000e+02
-; CHECK: [[COND2:%[0-9]+]] = fcmp ogt float %value, 8.800000e+01
-; CHECK: [[COND:%[0-9]+]] = or i1 [[COND2]], [[COND1]]
-; CHECK: br i1 [[COND]], label %[[CALL_LABEL:cdce.call[0-9]*]], label %[[END_LABEL:cdce.end[0-9]*]], !prof ![[BRANCH_WEIGHT]]
-; CHECK: [[CALL_LABEL]]:
-; CHECK-NEXT: %call_1 = call float @expf(float %value)
-; CHECK-NEXT: br label %[[END_LABEL]]
-; CHECK: [[END_LABEL]]:
-
- %call_3 = call float @exp2f(float %value)
-; CHECK: [[COND1:%[0-9]+]] = fcmp olt float %value, -1.490000e+02
-; CHECK: [[COND2:%[0-9]+]] = fcmp ogt float %value, 1.270000e+02
-; CHECK: [[COND:%[0-9]+]] = or i1 [[COND2]], [[COND1]]
-; CHECK: br i1 [[COND]], label %[[CALL_LABEL:cdce.call[0-9]*]], label %[[END_LABEL:cdce.end[0-9]*]], !prof ![[BRANCH_WEIGHT]]
-; CHECK: [[CALL_LABEL]]:
-; CHECK-NEXT: %call_3 = call float @exp2f(float %value)
-; CHECK-NEXT: br label %[[END_LABEL]]
-; CHECK: [[END_LABEL]]:
-
- %call_4 = call float @sinhf(float %value)
-; CHECK: [[COND1:%[0-9]+]] = fcmp olt float %value, -8.900000e+01
-; CHECK: [[COND2:%[0-9]+]] = fcmp ogt float %value, 8.900000e+01
-; CHECK: [[COND:%[0-9]+]] = or i1 [[COND2]], [[COND1]]
-; CHECK: br i1 [[COND]], label %[[CALL_LABEL:cdce.call[0-9]*]], label %[[END_LABEL:cdce.end[0-9]*]], !prof ![[BRANCH_WEIGHT]]
-; CHECK: [[CALL_LABEL]]:
-; CHECK-NEXT: %call_4 = call float @sinhf(float %value)
-; CHECK-NEXT: br label %[[END_LABEL]]
-; CHECK: [[END_LABEL]]:
-
- %call_5 = call float @expm1f(float %value)
-; CHECK: [[COND:%[0-9]+]] = fcmp ogt float %value, 8.800000e+01
-; CHECK: br i1 [[COND]], label %[[CALL_LABEL:cdce.call[0-9]*]], label %[[END_LABEL:cdce.end[0-9]*]], !prof ![[BRANCH_WEIGHT]]
-; CHECK: [[CALL_LABEL]]:
-; CHECK-NEXT: %call_5 = call float @expm1f(float %value)
-; CHECK-NEXT: br label %[[END_LABEL]]
-; CHECK: [[END_LABEL]]:
-
- ret void
-}
-
-declare float @coshf(float)
-declare float @expf(float)
-declare float @exp2f(float)
-declare float @sinhf(float)
-declare float @expm1f(float)
-
-define void @test_domain_error(float %value) {
-entry:
-
- %call_00 = call float @acosf(float %value)
-; CHECK: [[COND1:%[0-9]+]] = fcmp ogt float %value, 1.000000e+00
-; CHECK: [[COND2:%[0-9]+]] = fcmp olt float %value, -1.000000e+00
-; CHECK: [[COND:%[0-9]+]] = or i1 [[COND2]], [[COND1]]
-; CHECK: br i1 [[COND]], label %[[CALL_LABEL:cdce.call[0-9]*]], label %[[END_LABEL:cdce.end[0-9]*]], !prof ![[BRANCH_WEIGHT]]
-; CHECK: [[CALL_LABEL]]:
-; CHECK-NEXT: %call_00 = call float @acosf(float %value)
-; CHECK-NEXT: br label %[[END_LABEL]]
-; CHECK: [[END_LABEL]]:
-
- %call_01 = call float @asinf(float %value)
-; CHECK: [[COND1:%[0-9]+]] = fcmp ogt float %value, 1.000000e+00
-; CHECK: [[COND2:%[0-9]+]] = fcmp olt float %value, -1.000000e+00
-; CHECK: [[COND:%[0-9]+]] = or i1 [[COND2]], [[COND1]]
-; CHECK: br i1 [[COND]], label %[[CALL_LABEL:cdce.call[0-9]*]], label %[[END_LABEL:cdce.end[0-9]*]], !prof ![[BRANCH_WEIGHT]]
-; CHECK: [[CALL_LABEL]]:
-; CHECK-NEXT: %call_01 = call float @asinf(float %value)
-; CHECK-NEXT: br label %[[END_LABEL]]
-; CHECK: [[END_LABEL]]:
-
- %call_02 = call float @cosf(float %value)
-; CHECK: [[COND1:%[0-9]+]] = fcmp oeq float %value, 0xFFF0000000000000
-; CHECK: [[COND2:%[0-9]+]] = fcmp oeq float %value, 0x7FF0000000000000
-; CHECK: [[COND:%[0-9]+]] = or i1 [[COND2]], [[COND1]]
-; CHECK: br i1 [[COND]], label %[[CALL_LABEL:cdce.call[0-9]*]], label %[[END_LABEL:cdce.end[0-9]*]], !prof ![[BRANCH_WEIGHT]]
-; CHECK: [[CALL_LABEL]]:
-; CHECK-NEXT: %call_02 = call float @cosf(float %value)
-; CHECK-NEXT: br label %[[END_LABEL]]
-; CHECK: [[END_LABEL]]:
-
- %call_03 = call float @sinf(float %value)
-; CHECK: [[COND1:%[0-9]+]] = fcmp oeq float %value, 0xFFF0000000000000
-; CHECK: [[COND2:%[0-9]+]] = fcmp oeq float %value, 0x7FF0000000000000
-; CHECK: [[COND:%[0-9]+]] = or i1 [[COND2]], [[COND1]]
-; CHECK: br i1 [[COND]], label %[[CALL_LABEL:cdce.call[0-9]*]], label %[[END_LABEL:cdce.end[0-9]*]], !prof ![[BRANCH_WEIGHT]]
-; CHECK: [[CALL_LABEL]]:
-; CHECK-NEXT: %call_03 = call float @sinf(float %value)
-; CHECK-NEXT: br label %[[END_LABEL]]
-; CHECK: [[END_LABEL]]:
-
- %call_04 = call float @acoshf(float %value)
-; CHECK: [[COND:%[0-9]+]] = fcmp olt float %value, 1.000000e+00
-; CHECK: br i1 [[COND]], label %[[CALL_LABEL:cdce.call[0-9]*]], label %[[END_LABEL:cdce.end[0-9]*]], !prof ![[BRANCH_WEIGHT]]
-; CHECK: [[CALL_LABEL]]:
-; CHECK-NEXT: %call_04 = call float @acoshf(float %value)
-; CHECK-NEXT: br label %[[END_LABEL]]
-; CHECK: [[END_LABEL]]:
-
- %call_05 = call float @sqrtf(float %value)
-; CHECK: [[COND:%[0-9]+]] = fcmp olt float %value, 0.000000e+00
-; CHECK: br i1 [[COND]], label %[[CALL_LABEL:cdce.call[0-9]*]], label %[[END_LABEL:cdce.end[0-9]*]], !prof ![[BRANCH_WEIGHT]]
-; CHECK: [[CALL_LABEL]]:
-; CHECK-NEXT: %call_05 = call float @sqrtf(float %value)
-; CHECK-NEXT: br label %[[END_LABEL]]
-; CHECK: [[END_LABEL]]:
-
- %call_06 = call float @atanhf(float %value)
-; CHECK: [[COND1:%[0-9]+]] = fcmp oge float %value, 1.000000e+00
-; CHECK: [[COND2:%[0-9]+]] = fcmp ole float %value, -1.000000e+00
-; CHECK: [[COND:%[0-9]+]] = or i1 [[COND2]], [[COND1]]
-; CHECK: br i1 [[COND]], label %[[CALL_LABEL:cdce.call[0-9]*]], label %[[END_LABEL:cdce.end[0-9]*]], !prof ![[BRANCH_WEIGHT]]
-; CHECK: [[CALL_LABEL]]:
-; CHECK-NEXT: %call_06 = call float @atanhf(float %value)
-; CHECK-NEXT: br label %[[END_LABEL]]
-; CHECK: [[END_LABEL]]:
-
- %call_07 = call float @logf(float %value)
-; CHECK: [[COND:%[0-9]+]] = fcmp ole float %value, 0.000000e+00
-; CHECK: br i1 [[COND]], label %[[CALL_LABEL:cdce.call[0-9]*]], label %[[END_LABEL:cdce.end[0-9]*]], !prof ![[BRANCH_WEIGHT]]
-; CHECK: [[CALL_LABEL]]:
-; CHECK-NEXT: %call_07 = call float @logf(float %value)
-; CHECK-NEXT: br label %[[END_LABEL]]
-; CHECK: [[END_LABEL]]:
-
- %call_08 = call float @log10f(float %value)
-; CHECK: [[COND:%[0-9]+]] = fcmp ole float %value, 0.000000e+00
-; CHECK: br i1 [[COND]], label %[[CALL_LABEL:cdce.call[0-9]*]], label %[[END_LABEL:cdce.end[0-9]*]], !prof ![[BRANCH_WEIGHT]]
-; CHECK: [[CALL_LABEL]]:
-; CHECK-NEXT: %call_08 = call float @log10f(float %value)
-; CHECK-NEXT: br label %[[END_LABEL]]
-; CHECK: [[END_LABEL]]:
-
- %call_09 = call float @log2f(float %value)
-; CHECK: [[COND:%[0-9]+]] = fcmp ole float %value, 0.000000e+00
-; CHECK: br i1 [[COND]], label %[[CALL_LABEL:cdce.call[0-9]*]], label %[[END_LABEL:cdce.end[0-9]*]], !prof ![[BRANCH_WEIGHT]]
-; CHECK: [[CALL_LABEL]]:
-; CHECK-NEXT: %call_09 = call float @log2f(float %value)
-; CHECK-NEXT: br label %[[END_LABEL]]
-; CHECK: [[END_LABEL]]:
-
- %call_10 = call float @logbf(float %value)
-; CHECK: [[COND:%[0-9]+]] = fcmp ole float %value, 0.000000e+00
-; CHECK: br i1 [[COND]], label %[[CALL_LABEL:cdce.call[0-9]*]], label %[[END_LABEL:cdce.end[0-9]*]], !prof ![[BRANCH_WEIGHT]]
-; CHECK: [[CALL_LABEL]]:
-; CHECK-NEXT: %call_10 = call float @logbf(float %value)
-; CHECK-NEXT: br label %[[END_LABEL]]
-; CHECK: [[END_LABEL]]:
-
- %call_11 = call float @log1pf(float %value)
-; CHECK: [[COND:%[0-9]+]] = fcmp ole float %value, -1.000000e+00
-; CHECK: br i1 [[COND]], label %[[CALL_LABEL:cdce.call[0-9]*]], label %[[END_LABEL:cdce.end[0-9]*]], !prof ![[BRANCH_WEIGHT]]
-; CHECK: [[CALL_LABEL]]:
-; CHECK-NEXT: %call_11 = call float @log1pf(float %value)
-; CHECK-NEXT: br label %[[END_LABEL]]
-; CHECK: [[END_LABEL]]:
- ret void
-}
-
-declare float @acosf(float)
-declare float @asinf(float)
-declare float @cosf(float)
-declare float @sinf(float)
-declare float @acoshf(float)
-declare float @sqrtf(float)
-declare float @atanhf(float)
-declare float @logf(float)
-declare float @log10f(float)
-declare float @log2f(float)
-declare float @logbf(float)
-declare float @log1pf(float)
-
-; CHECK: ![[BRANCH_WEIGHT]] = !{!"branch_weights", i32 1, i32 2000}
diff --git a/llvm/test/Transforms/Util/libcalls-shrinkwrap-long-double.ll b/llvm/test/Transforms/Util/libcalls-shrinkwrap-long-double.ll
deleted file mode 100644
index 54a31e5173f..00000000000
--- a/llvm/test/Transforms/Util/libcalls-shrinkwrap-long-double.ll
+++ /dev/null
@@ -1,192 +0,0 @@
-; RUN: opt < %s -libcalls-shrinkwrap -S | FileCheck %s
-; New PM
-; RUN: opt < %s -passes=libcalls-shrinkwrap -S | FileCheck %s
-
-target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
-target triple = "x86_64-unknown-linux-gnu"
-
-define void @test_range_error(x86_fp80 %value) {
-entry:
- %call_0 = call x86_fp80 @coshl(x86_fp80 %value)
-; CHECK: [[COND1:%[0-9]+]] = fcmp olt x86_fp80 %value, 0xKC00CB174000000000000
-; CHECK: [[COND2:%[0-9]+]] = fcmp ogt x86_fp80 %value, 0xK400CB174000000000000
-; CHECK: [[COND:%[0-9]+]] = or i1 [[COND2]], [[COND1]]
-; CHECK: br i1 [[COND]], label %[[CALL_LABEL:cdce.call[0-9]*]], label %[[END_LABEL:cdce.end[0-9]*]], !prof ![[BRANCH_WEIGHT:[0-9]+]]
-; CHECK: [[CALL_LABEL]]:
-; CHECK-NEXT: %call_0 = call x86_fp80 @coshl(x86_fp80 %value)
-; CHECK-NEXT: br label %[[END_LABEL]]
-; CHECK: [[END_LABEL]]:
-
- %call_1 = call x86_fp80 @expl(x86_fp80 %value)
-; CHECK: [[COND1:%[0-9]+]] = fcmp olt x86_fp80 %value, 0xKC00CB21C000000000000
-; CHECK: [[COND2:%[0-9]+]] = fcmp ogt x86_fp80 %value, 0xK400CB170000000000000
-; CHECK: [[COND:%[0-9]+]] = or i1 [[COND2]], [[COND1]]
-; CHECK: br i1 [[COND]], label %[[CALL_LABEL:cdce.call[0-9]*]], label %[[END_LABEL:cdce.end[0-9]*]], !prof ![[BRANCH_WEIGHT]]
-; CHECK: [[CALL_LABEL]]:
-; CHECK-NEXT: %call_1 = call x86_fp80 @expl(x86_fp80 %value)
-; CHECK-NEXT: br label %[[END_LABEL]]
-; CHECK: [[END_LABEL]]:
-
- %call_3 = call x86_fp80 @exp2l(x86_fp80 %value)
-; CHECK: [[COND1:%[0-9]+]] = fcmp olt x86_fp80 %value, 0xKC00D807A000000000000
-; CHECK: [[COND2:%[0-9]+]] = fcmp ogt x86_fp80 %value, 0xK400CB1DC000000000000
-; CHECK: [[COND:%[0-9]+]] = or i1 [[COND2]], [[COND1]]
-; CHECK: br i1 [[COND]], label %[[CALL_LABEL:cdce.call[0-9]*]], label %[[END_LABEL:cdce.end[0-9]*]], !prof ![[BRANCH_WEIGHT]]
-; CHECK: [[CALL_LABEL]]:
-; CHECK-NEXT: %call_3 = call x86_fp80 @exp2l(x86_fp80 %value)
-; CHECK-NEXT: br label %[[END_LABEL]]
-; CHECK: [[END_LABEL]]:
-
- %call_4 = call x86_fp80 @sinhl(x86_fp80 %value)
-; CHECK: [[COND1:%[0-9]+]] = fcmp olt x86_fp80 %value, 0xKC00CB174000000000000
-; CHECK: [[COND2:%[0-9]+]] = fcmp ogt x86_fp80 %value, 0xK400CB174000000000000
-; CHECK: [[COND:%[0-9]+]] = or i1 [[COND2]], [[COND1]]
-; CHECK: br i1 [[COND]], label %[[CALL_LABEL:cdce.call[0-9]*]], label %[[END_LABEL:cdce.end[0-9]*]], !prof ![[BRANCH_WEIGHT]]
-; CHECK: [[CALL_LABEL]]:
-; CHECK-NEXT: %call_4 = call x86_fp80 @sinhl(x86_fp80 %value)
-; CHECK-NEXT: br label %[[END_LABEL]]
-; CHECK: [[END_LABEL]]:
-
- %call_5 = call x86_fp80 @expm1l(x86_fp80 %value)
-; CHECK: [[COND:%[0-9]+]] = fcmp ogt x86_fp80 %value, 0xK400CB170000000000000
-; CHECK: br i1 [[COND]], label %[[CALL_LABEL:cdce.call[0-9]*]], label %[[END_LABEL:cdce.end[0-9]*]], !prof ![[BRANCH_WEIGHT]]
-; CHECK: [[CALL_LABEL]]:
-; CHECK-NEXT: %call_5 = call x86_fp80 @expm1l(x86_fp80 %value)
-; CHECK-NEXT: br label %[[END_LABEL]]
-; CHECK: [[END_LABEL]]:
-
- ret void
-}
-
-declare x86_fp80 @coshl(x86_fp80)
-declare x86_fp80 @expl(x86_fp80)
-declare x86_fp80 @exp10l(x86_fp80)
-declare x86_fp80 @exp2l(x86_fp80)
-declare x86_fp80 @sinhl(x86_fp80)
-declare x86_fp80 @expm1l(x86_fp80)
-
-define void @test_domain_error(x86_fp80 %value) {
-entry:
- %call_00 = call x86_fp80 @acosl(x86_fp80 %value)
-; CHECK: [[COND1:%[0-9]+]] = fcmp ogt x86_fp80 %value, 0xK3FFF8000000000000000
-; CHECK: [[COND2:%[0-9]+]] = fcmp olt x86_fp80 %value, 0xKBFFF8000000000000000
-; CHECK: [[COND:%[0-9]+]] = or i1 [[COND2]], [[COND1]]
-; CHECK: br i1 [[COND]], label %[[CALL_LABEL:cdce.call[0-9]*]], label %[[END_LABEL:cdce.end[0-9]*]], !prof ![[BRANCH_WEIGHT]]
-; CHECK: [[CALL_LABEL]]:
-; CHECK-NEXT: %call_00 = call x86_fp80 @acosl(x86_fp80 %value)
-; CHECK-NEXT: br label %[[END_LABEL]]
-; CHECK: [[END_LABEL]]:
-
- %call_01 = call x86_fp80 @asinl(x86_fp80 %value)
-; CHECK: [[COND1:%[0-9]+]] = fcmp ogt x86_fp80 %value, 0xK3FFF8000000000000000
-; CHECK: [[COND2:%[0-9]+]] = fcmp olt x86_fp80 %value, 0xKBFFF8000000000000000
-; CHECK: [[COND:%[0-9]+]] = or i1 [[COND2]], [[COND1]]
-; CHECK: br i1 [[COND]], label %[[CALL_LABEL:cdce.call[0-9]*]], label %[[END_LABEL:cdce.end[0-9]*]], !prof ![[BRANCH_WEIGHT]]
-; CHECK: [[CALL_LABEL]]:
-; CHECK-NEXT: %call_01 = call x86_fp80 @asinl(x86_fp80 %value)
-; CHECK-NEXT: br label %[[END_LABEL]]
-; CHECK: [[END_LABEL]]:
-
- %call_02 = call x86_fp80 @cosl(x86_fp80 %value)
-; CHECK: [[COND1:%[0-9]+]] = fcmp oeq x86_fp80 %value, 0xKFFFF8000000000000000
-; CHECK: [[COND2:%[0-9]+]] = fcmp oeq x86_fp80 %value, 0xK7FFF8000000000000000
-; CHECK: [[COND:%[0-9]+]] = or i1 [[COND2]], [[COND1]]
-; CHECK: br i1 [[COND]], label %[[CALL_LABEL:cdce.call[0-9]*]], label %[[END_LABEL:cdce.end[0-9]*]], !prof ![[BRANCH_WEIGHT]]
-; CHECK: [[CALL_LABEL]]:
-; CHECK-NEXT: %call_02 = call x86_fp80 @cosl(x86_fp80 %value)
-; CHECK-NEXT: br label %[[END_LABEL]]
-; CHECK: [[END_LABEL]]:
-
- %call_03 = call x86_fp80 @sinl(x86_fp80 %value)
-; CHECK: [[COND1:%[0-9]+]] = fcmp oeq x86_fp80 %value, 0xKFFFF8000000000000000
-; CHECK: [[COND2:%[0-9]+]] = fcmp oeq x86_fp80 %value, 0xK7FFF8000000000000000
-; CHECK: [[COND:%[0-9]+]] = or i1 [[COND2]], [[COND1]]
-; CHECK: br i1 [[COND]], label %[[CALL_LABEL:cdce.call[0-9]*]], label %[[END_LABEL:cdce.end[0-9]*]], !prof ![[BRANCH_WEIGHT]]
-; CHECK: [[CALL_LABEL]]:
-; CHECK-NEXT: %call_03 = call x86_fp80 @sinl(x86_fp80 %value)
-; CHECK-NEXT: br label %[[END_LABEL]]
-; CHECK: [[END_LABEL]]:
-
- %call_04 = call x86_fp80 @acoshl(x86_fp80 %value)
-; CHECK: [[COND:%[0-9]+]] = fcmp olt x86_fp80 %value, 0xK3FFF8000000000000000
-; CHECK: br i1 [[COND]], label %[[CALL_LABEL:cdce.call[0-9]*]], label %[[END_LABEL:cdce.end[0-9]*]], !prof ![[BRANCH_WEIGHT]]
-; CHECK: [[CALL_LABEL]]:
-; CHECK-NEXT: %call_04 = call x86_fp80 @acoshl(x86_fp80 %value)
-; CHECK-NEXT: br label %[[END_LABEL]]
-; CHECK: [[END_LABEL]]:
-
- %call_05 = call x86_fp80 @sqrtl(x86_fp80 %value)
-; CHECK: [[COND:%[0-9]+]] = fcmp olt x86_fp80 %value, 0xK00000000000000000000
-; CHECK: br i1 [[COND]], label %[[CALL_LABEL:cdce.call[0-9]*]], label %[[END_LABEL:cdce.end[0-9]*]], !prof ![[BRANCH_WEIGHT]]
-; CHECK: [[CALL_LABEL]]:
-; CHECK-NEXT: %call_05 = call x86_fp80 @sqrtl(x86_fp80 %value)
-; CHECK-NEXT: br label %[[END_LABEL]]
-; CHECK: [[END_LABEL]]:
-
- %call_06 = call x86_fp80 @atanhl(x86_fp80 %value)
-; CHECK: [[COND1:%[0-9]+]] = fcmp oge x86_fp80 %value, 0xK3FFF8000000000000000
-; CHECK: [[COND2:%[0-9]+]] = fcmp ole x86_fp80 %value, 0xKBFFF8000000000000000
-; CHECK: [[COND:%[0-9]+]] = or i1 [[COND2]], [[COND1]]
-; CHECK: br i1 [[COND]], label %[[CALL_LABEL:cdce.call[0-9]*]], label %[[END_LABEL:cdce.end[0-9]*]], !prof ![[BRANCH_WEIGHT]]
-; CHECK: [[CALL_LABEL]]:
-; CHECK-NEXT: %call_06 = call x86_fp80 @atanhl(x86_fp80 %value)
-; CHECK-NEXT: br label %[[END_LABEL]]
-; CHECK: [[END_LABEL]]:
-
- %call_07 = call x86_fp80 @logl(x86_fp80 %value)
-; CHECK: [[COND:%[0-9]+]] = fcmp ole x86_fp80 %value, 0xK00000000000000000000
-; CHECK: br i1 [[COND]], label %[[CALL_LABEL:cdce.call[0-9]*]], label %[[END_LABEL:cdce.end[0-9]*]], !prof ![[BRANCH_WEIGHT]]
-; CHECK: [[CALL_LABEL]]:
-; CHECK-NEXT: %call_07 = call x86_fp80 @logl(x86_fp80 %value)
-; CHECK-NEXT: br label %[[END_LABEL]]
-; CHECK: [[END_LABEL]]:
-
- %call_08 = call x86_fp80 @log10l(x86_fp80 %value)
-; CHECK: [[COND:%[0-9]+]] = fcmp ole x86_fp80 %value, 0xK00000000000000000000
-; CHECK: br i1 [[COND]], label %[[CALL_LABEL:cdce.call[0-9]*]], label %[[END_LABEL:cdce.end[0-9]*]], !prof ![[BRANCH_WEIGHT]]
-; CHECK: [[CALL_LABEL]]:
-; CHECK-NEXT: %call_08 = call x86_fp80 @log10l(x86_fp80 %value)
-; CHECK-NEXT: br label %[[END_LABEL]]
-; CHECK: [[END_LABEL]]:
-
- %call_09 = call x86_fp80 @log2l(x86_fp80 %value)
-; CHECK: [[COND:%[0-9]+]] = fcmp ole x86_fp80 %value, 0xK00000000000000000000
-; CHECK: br i1 [[COND]], label %[[CALL_LABEL:cdce.call[0-9]*]], label %[[END_LABEL:cdce.end[0-9]*]], !prof ![[BRANCH_WEIGHT]]
-; CHECK: [[CALL_LABEL]]:
-; CHECK-NEXT: %call_09 = call x86_fp80 @log2l(x86_fp80 %value)
-; CHECK-NEXT: br label %[[END_LABEL]]
-; CHECK: [[END_LABEL]]:
-
- %call_10 = call x86_fp80 @logbl(x86_fp80 %value)
-; CHECK: [[COND:%[0-9]+]] = fcmp ole x86_fp80 %value, 0xK00000000000000000000
-; CHECK: br i1 [[COND]], label %[[CALL_LABEL:cdce.call[0-9]*]], label %[[END_LABEL:cdce.end[0-9]*]], !prof ![[BRANCH_WEIGHT]]
-; CHECK: [[CALL_LABEL]]:
-; CHECK-NEXT: %call_10 = call x86_fp80 @logbl(x86_fp80 %value)
-; CHECK-NEXT: br label %[[END_LABEL]]
-; CHECK: [[END_LABEL]]:
-
- %call_11 = call x86_fp80 @log1pl(x86_fp80 %value)
-; CHECK: [[COND:%[0-9]+]] = fcmp ole x86_fp80 %value, 0xKBFFF8000000000000000
-; CHECK: br i1 [[COND]], label %[[CALL_LABEL:cdce.call[0-9]*]], label %[[END_LABEL:cdce.end[0-9]*]], !prof ![[BRANCH_WEIGHT]]
-; CHECK: [[CALL_LABEL]]:
-; CHECK-NEXT: %call_11 = call x86_fp80 @log1pl(x86_fp80 %value)
-; CHECK-NEXT: br label %[[END_LABEL]]
-; CHECK: [[END_LABEL]]:
-
- ret void
-}
-
-declare x86_fp80 @acosl(x86_fp80)
-declare x86_fp80 @asinl(x86_fp80)
-declare x86_fp80 @cosl(x86_fp80)
-declare x86_fp80 @sinl(x86_fp80)
-declare x86_fp80 @acoshl(x86_fp80)
-declare x86_fp80 @sqrtl(x86_fp80)
-declare x86_fp80 @atanhl(x86_fp80)
-declare x86_fp80 @logl(x86_fp80)
-declare x86_fp80 @log10l(x86_fp80)
-declare x86_fp80 @log2l(x86_fp80)
-declare x86_fp80 @logbl(x86_fp80)
-declare x86_fp80 @log1pl(x86_fp80)
-
-; CHECK: ![[BRANCH_WEIGHT]] = !{!"branch_weights", i32 1, i32 2000}
diff --git a/llvm/test/Transforms/Util/lowerinvoke-funclet.ll b/llvm/test/Transforms/Util/lowerinvoke-funclet.ll
deleted file mode 100644
index 1aa2fc8e7a2..00000000000
--- a/llvm/test/Transforms/Util/lowerinvoke-funclet.ll
+++ /dev/null
@@ -1,39 +0,0 @@
-; RUN: opt -lowerinvoke -S < %s | FileCheck %s
-
-; Test if invoke instructions that have a funclet operand bundle can be lowered.
-
-%struct.Cleanup = type { i8 }
-
-define void @lowerinvoke_funclet() personality i8* bitcast (i32 (...)* @__CxxFrameHandler3 to i8*) {
-; CHECK-LABEL: @lowerinvoke_funclet
-entry:
- %c = alloca %struct.Cleanup, align 1
- invoke void @foo()
- to label %try.cont unwind label %catch.dispatch
-
-catch.dispatch: ; preds = %entry
- %0 = catchswitch within none [label %catch] unwind to caller
-
-catch: ; preds = %catch.dispatch
- %1 = catchpad within %0 [i8* null, i32 64, i8* null]
- invoke void @bar(i32 3) [ "funclet"(token %1), "test"(i32 0) ]
- to label %invoke.cont1 unwind label %ehcleanup
-; CHECK: call void @bar(i32 3) [ "funclet"(token %1), "test"(i32 0) ]
-
-invoke.cont1: ; preds = %catch
- call void @"??1Cleanup@@QEAA@XZ"(%struct.Cleanup* %c) #3 [ "funclet"(token %1) ]
- catchret from %1 to label %try.cont
-
-try.cont: ; preds = %entry, %invoke.cont1
- ret void
-
-ehcleanup: ; preds = %catch
- %2 = cleanuppad within %1 []
- call void @"??1Cleanup@@QEAA@XZ"(%struct.Cleanup* %c) #3 [ "funclet"(token %2) ]
- cleanupret from %2 unwind to caller
-}
-
-declare void @foo()
-declare void @bar(i32)
-declare i32 @__CxxFrameHandler3(...)
-declare void @"??1Cleanup@@QEAA@XZ"(%struct.Cleanup*) unnamed_addr
diff --git a/llvm/test/Transforms/Util/lowerswitch.ll b/llvm/test/Transforms/Util/lowerswitch.ll
deleted file mode 100644
index 6344f17b6ba..00000000000
--- a/llvm/test/Transforms/Util/lowerswitch.ll
+++ /dev/null
@@ -1,302 +0,0 @@
-; RUN: opt -lowerswitch -S < %s | FileCheck %s
-
-; Test that we don't crash and have a different basic block for each incoming edge.
-define void @test0(i32 %mode) {
-; CHECK-LABEL: @test0
-;
-; CHECK: icmp eq i32 %mode, 4
-; CHECK-NEXT: label %BB3, label %NewDefault
-;
-; CHECK: icmp eq i32 %mode, 2
-; CHECK-NEXT: label %BB3, label %NewDefault
-;
-; CHECK: icmp eq i32 %mode, 0
-; CHECK-NEXT: label %BB3, label %NewDefault
-;
-; CHECK: %merge = phi i64 [ 1, %BB3 ], [ 0, %NewDefault ]
-BB1:
- switch i32 %mode, label %BB2 [
- i32 3, label %BB2
- i32 5, label %BB2
- i32 0, label %BB3
- i32 2, label %BB3
- i32 4, label %BB3
- ]
-
-BB2:
- %merge = phi i64 [ 1, %BB3 ], [ 0, %BB1 ], [ 0, %BB1 ], [ 0, %BB1 ]
- ret void
-
-BB3:
- br label %BB2
-}
-
-; Test switch cases that are merged into a single case during lowerswitch
-; (take 84 and 85 below) - check that the number of incoming phi values match
-; the number of branches.
-define void @test1(i32 %mode) {
-; CHECK-LABEL: @test1
-entry:
- br label %bb1
-
-bb1:
- switch i32 %mode, label %bb1 [
- i32 84, label %bb3
- i32 85, label %bb3
- i32 86, label %bb2
- i32 78, label %exit
- i32 99, label %bb3
- ]
-
-bb2:
- br label %bb3
-
-bb3:
-; CHECK-LABEL: bb3
-; CHECK: %tmp = phi i32 [ 1, %NodeBlock ], [ 0, %bb2 ], [ 1, %LeafBlock3 ]
- %tmp = phi i32 [ 1, %bb1 ], [ 0, %bb2 ], [ 1, %bb1 ], [ 1, %bb1 ]
-; CHECK-NEXT: %tmp2 = phi i32 [ 2, %NodeBlock ], [ 5, %bb2 ], [ 2, %LeafBlock3 ]
- %tmp2 = phi i32 [ 2, %bb1 ], [ 2, %bb1 ], [ 5, %bb2 ], [ 2, %bb1 ]
- br label %exit
-
-exit:
- ret void
-}
-
-; Test that we don't crash.
-define void @test2(i32 %mode) {
-; CHECK-LABEL: @test2
- br i1 undef, label %1, label %._crit_edge
-
-; <label>:1 ; preds = %0
- switch i32 %mode, label %33 [
- i32 2, label %2
- i32 3, label %3
- i32 4, label %4
- i32 5, label %5
- i32 6, label %6
- i32 7, label %7
- i32 8, label %8
- i32 9, label %9
- i32 10, label %10
- i32 11, label %14
- i32 12, label %18
- i32 13, label %22
- i32 14, label %26
- i32 15, label %27
- i32 16, label %34
- i32 17, label %34
- i32 18, label %34
- i32 19, label %34
- i32 22, label %34
- i32 20, label %31
- i32 21, label %32
- ]
-
-; <label>:2 ; preds = %1
- br label %34
-
-; <label>:3 ; preds = %1
- br label %34
-
-; <label>:4 ; preds = %1
- br label %34
-
-; <label>:5 ; preds = %1
- br label %34
-
-; <label>:6 ; preds = %1
- br label %34
-
-; <label>:7 ; preds = %1
- br label %34
-
-; <label>:8 ; preds = %1
- br label %34
-
-; <label>:9 ; preds = %1
- br label %34
-
-; <label>:10 ; preds = %1
- br i1 undef, label %11, label %12
-
-; <label>:11 ; preds = %10
- br label %13
-
-; <label>:12 ; preds = %10
- br label %13
-
-; <label>:13 ; preds = %12, %11
- br label %34
-
-; <label>:14 ; preds = %1
- br i1 undef, label %15, label %16
-
-; <label>:15 ; preds = %14
- br label %17
-
-; <label>:16 ; preds = %14
- br label %17
-
-; <label>:17 ; preds = %16, %15
- br label %34
-
-; <label>:18 ; preds = %1
- br i1 undef, label %19, label %20
-
-; <label>:19 ; preds = %18
- br label %21
-
-; <label>:20 ; preds = %18
- br label %21
-
-; <label>:21 ; preds = %20, %19
- br label %34
-
-; <label>:22 ; preds = %1
- br i1 undef, label %23, label %24
-
-; <label>:23 ; preds = %22
- br label %25
-
-; <label>:24 ; preds = %22
- br label %25
-
-; <label>:25 ; preds = %24, %23
- br label %34
-
-; <label>:26 ; preds = %1
- br label %34
-
-; <label>:27 ; preds = %1
- br i1 undef, label %28, label %29
-
-; <label>:28 ; preds = %27
- br label %30
-
-; <label>:29 ; preds = %27
- br label %30
-
-; <label>:30 ; preds = %29, %28
- br label %34
-
-; <label>:31 ; preds = %1
- br label %34
-
-; <label>:32 ; preds = %1
- br label %34
-
-; <label>:33 ; preds = %1
- br label %34
-
-; <label>:34 ; preds = %33, %32, %31, %30, %26, %25, %21, %17, %13, %9, %8, %7, %6, %5, %4, %3, %2, %1, %1, %1, %1, %1
- %o.0 = phi float [ undef, %33 ], [ undef, %32 ], [ undef, %31 ], [ undef, %30 ], [ undef, %26 ], [ undef, %25 ], [ undef, %21 ], [ undef, %17 ], [ undef, %13 ], [ undef, %9 ], [ undef, %8 ], [ undef, %7 ], [ undef, %6 ], [ undef, %5 ], [ undef, %4 ], [ undef, %3 ], [ undef, %2 ], [ undef, %1 ], [ undef, %1 ], [ undef, %1 ], [ undef, %1 ], [ undef, %1 ]
- br label %._crit_edge
-
-._crit_edge: ; preds = %34, %0
- ret void
-}
-
-; Test that the PHI node in for.cond should have one entry for each predecessor
-; of its parent basic block after lowerswitch merged several cases into a new
-; default block.
-define void @test3(i32 %mode) {
-; CHECK-LABEL: @test3
-entry:
- br label %lbl1
-
-lbl1: ; preds = %cleanup, %entry
- br label %lbl2
-
-lbl2: ; preds = %cleanup, %lbl1
- br label %for.cond
-
-for.cond: ; preds = %cleanup, %cleanup, %lbl2
-; CHECK: for.cond:
-; CHECK: phi i16 [ undef, %lbl2 ], [ %b.3, %NewDefault ]{{$}}
-; CHECK: for.cond1:
- %b.2 = phi i16 [ undef, %lbl2 ], [ %b.3, %cleanup ], [ %b.3, %cleanup ]
- br label %for.cond1
-
-for.cond1: ; preds = %for.inc, %for.cond
- %b.3 = phi i16 [ %b.2, %for.cond ], [ undef, %for.inc ]
- %tobool = icmp ne i16 %b.3, 0
- br i1 %tobool, label %for.body, label %for.end
-
-for.body: ; preds = %for.cond1
- br i1 undef, label %if.then, label %for.inc
-
-if.then: ; preds = %for.body
- br label %cleanup
-
-for.inc: ; preds = %for.body
- br label %for.cond1
-
-for.end: ; preds = %for.cond1
- br i1 undef, label %if.then4, label %for.body7
-
-if.then4: ; preds = %for.end
- br label %cleanup
-
-for.body7: ; preds = %for.end
- br label %cleanup
-
-cleanup: ; preds = %for.body7, %if.then4, %if.then
- switch i32 %mode, label %unreachable [
- i32 0, label %for.cond
- i32 2, label %lbl1
- i32 5, label %for.cond
- i32 3, label %lbl2
- ]
-
-unreachable: ; preds = %cleanup
- unreachable
-}
-
-; Test that the PHI node in cleanup17 is removed as the switch default block is
-; not reachable.
-define void @test4(i32 %mode) {
-; CHECK-LABEL: @test4
-entry:
- switch i32 %mode, label %cleanup17 [
- i32 0, label %return
- i32 9, label %return
- ]
-
-cleanup17:
-; CHECK: cleanup17:
-; CHECK-NOT: phi i16 [ undef, %entry ]
-; CHECK: return:
-
- %retval.4 = phi i16 [ undef, %entry ]
- unreachable
-
-return:
- ret void
-}
-
-; Test that the PHI node in for.inc is updated correctly as the switch is
-; replaced with a single branch to for.inc
-define void @test5(i32 %mode) {
-; CHECK-LABEL: @test5
-entry:
- br i1 undef, label %cleanup10, label %cleanup10.thread
-
-cleanup10.thread:
- br label %for.inc
-
-cleanup10:
- switch i32 %mode, label %unreachable [
- i32 0, label %for.inc
- i32 4, label %for.inc
- ]
-
-for.inc:
-; CHECK: for.inc:
-; CHECK-NEXT: phi i16 [ 0, %cleanup10.thread ], [ undef, %cleanup10 ]
-%0 = phi i16 [ undef, %cleanup10 ], [ 0, %cleanup10.thread ], [ undef, %cleanup10 ]
- unreachable
-
-unreachable:
- unreachable
-}
diff --git a/llvm/test/Transforms/Util/simplify-dbg-declare-load.ll b/llvm/test/Transforms/Util/simplify-dbg-declare-load.ll
deleted file mode 100644
index a62e2891ccb..00000000000
--- a/llvm/test/Transforms/Util/simplify-dbg-declare-load.ll
+++ /dev/null
@@ -1,61 +0,0 @@
-; RUN: opt -instcombine -instcombine-lower-dbg-declare=1 -S < %s | FileCheck %s
-; RUN: opt -instcombine -instcombine-lower-dbg-declare=0 -S < %s | FileCheck %s --check-prefix=DECLARE
-target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
-target triple = "x86_64-pc-linux-gnu"
-
-%foo = type { i64, i32, i32 }
-
-; Function Attrs: nounwind readnone
-declare void @llvm.dbg.declare(metadata, metadata, metadata) #0
-declare void @llvm.dbg.value(metadata, metadata, metadata) #0
-
-; Function Attrs: sspreq
-define void @julia_fastshortest_6256() #1 {
-top:
- %cp = alloca %foo, align 8
- %sink = alloca %foo, align 8
- call void @llvm.dbg.declare(metadata %foo* %cp, metadata !1, metadata !16), !dbg !17
- br i1 undef, label %idxend, label %fail
-
-fail: ; preds = %top
- unreachable
-
-idxend: ; preds = %top
-; CHECK-NOT: call void @llvm.dbg.value(metadata %foo* %cp,
- %0 = load %foo, %foo* %cp, align 8
- store volatile %foo %0, %foo *%sink, align 8
-; CHECK: call void @llvm.dbg.value(metadata %foo %
- store %foo %0, %foo* undef, align 8
- ret void
-}
-
-; Keep the declare if we keep the alloca.
-; DECLARE-LABEL: define void @julia_fastshortest_6256()
-; DECLARE: %cp = alloca %foo, align 8
-; DECLARE: call void @llvm.dbg.declare(metadata %foo* %cp,
-
-attributes #0 = { nounwind readnone }
-attributes #1 = { sspreq }
-
-!llvm.module.flags = !{!0}
-!llvm.dbg.cu = !{!18}
-
-!0 = !{i32 1, !"Debug Info Version", i32 3}
-!1 = !DILocalVariable(name: "cp", scope: !2, file: !3, line: 106, type: !12)
-!2 = distinct !DISubprogram(name: "fastshortest", linkageName: "julia_fastshortest_6256", scope: null, file: !3, type: !4, isLocal: false, isDefinition: true, isOptimized: true, unit: !18, retainedNodes: !11)
-!3 = !DIFile(filename: "grisu/fastshortest.jl", directory: ".")
-!4 = !DISubroutineType(types: !5)
-!5 = !{!6, !7}
-!6 = !DIBasicType(name: "Float64", size: 64, align: 64, encoding: DW_ATE_unsigned)
-!7 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !8, size: 64, align: 64)
-!8 = !DICompositeType(tag: DW_TAG_structure_type, name: "jl_value_t", file: !9, line: 71, align: 64, elements: !10)
-!9 = !DIFile(filename: "julia.h", directory: "")
-!10 = !{!7}
-!11 = !{}
-!12 = !DICompositeType(tag: DW_TAG_structure_type, name: "Float", size: 128, align: 64, elements: !13, runtimeLang: DW_LANG_Julia)
-!13 = !{!14, !15, !15}
-!14 = !DIBasicType(name: "UInt64", size: 64, align: 64, encoding: DW_ATE_unsigned)
-!15 = !DIBasicType(name: "Int32", size: 32, align: 32, encoding: DW_ATE_unsigned)
-!16 = !DIExpression()
-!17 = !DILocation(line: 106, scope: !2)
-!18 = distinct !DICompileUnit(language: DW_LANG_Julia, file: !3)
diff --git a/llvm/test/Transforms/Util/store-first-op.ll b/llvm/test/Transforms/Util/store-first-op.ll
deleted file mode 100644
index c4ef2a14262..00000000000
--- a/llvm/test/Transforms/Util/store-first-op.ll
+++ /dev/null
@@ -1,37 +0,0 @@
-; RUN: opt -instcombine -S %s | FileCheck %s
-
-%foo = type { i8 }
-
-; Function Attrs: nounwind uwtable
-define void @_ZN4llvm13ScaledNumbers10multiply64Emm() {
-entry:
- %getU = alloca %foo, align 1
-; This is supposed to make sure that the declare conversion, does not accidentally think the store OF
-; %getU is a store TO %getU. There are valid reasons to have an llvm.dbg.value here, but if the pass
-; is changed to emit such, a more specific check should be added to make sure that any llvm.dbg.value
-; is correct.
-; CHECK-NOT: @llvm.dbg.value(metadata %foo* %getU
- call void @llvm.dbg.declare(metadata %foo* %getU, metadata !3, metadata !6), !dbg !7
- store %foo* %getU, %foo** undef, align 8, !tbaa !8
- unreachable
-}
-
-; Function Attrs: nounwind readnone
-declare void @llvm.dbg.declare(metadata, metadata, metadata) #1
-
-attributes #1 = { nounwind readnone }
-
-!llvm.dbg.cu = !{!0}
-!llvm.module.flags = !{!2}
-
-!0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, file: !1, producer: "clang version 3.8.0", isOptimized: true, runtimeVersion: 0, emissionKind: FullDebug)
-!1 = !DIFile(filename: "none", directory: ".")
-!2 = !{i32 2, !"Debug Info Version", i32 3}
-!3 = !DILocalVariable(name: "getU", scope: !4, file: !1, line: 25, type: !5)
-!4 = distinct !DISubprogram(name: "multiply64", linkageName: "_ZN4llvm13ScaledNumbers10multiply64Emm", scope: null, file: !1, line: 22, isLocal: false, isDefinition: true, scopeLine: 23, flags: DIFlagPrototyped, isOptimized: true, unit: !0)
-!5 = !DICompositeType(tag: DW_TAG_class_type, scope: !4, file: !1, line: 25, size: 8, align: 8)
-!6 = !DIExpression()
-!7 = !DILocation(line: 25, column: 8, scope: !4)
-!8 = !{!10, !10, i64 0}
-!9 = !{i64 0}
-!10 = !{!"scalar type", !9}
diff --git a/llvm/test/Transforms/Util/strip-gc-relocates.ll b/llvm/test/Transforms/Util/strip-gc-relocates.ll
deleted file mode 100644
index 359de7b3efe..00000000000
--- a/llvm/test/Transforms/Util/strip-gc-relocates.ll
+++ /dev/null
@@ -1,120 +0,0 @@
-; RUN: opt -S -strip-gc-relocates -instcombine < %s | FileCheck %s
-; test utility/debugging pass which removes gc.relocates, inserted by -rewrite-statepoints-for-gc
-declare void @use_obj32(i32 addrspace(1)*) "gc-leaf-function"
-
-declare void @g()
-declare token @llvm.experimental.gc.statepoint.p0f_isVoidf(i64, i32, void ()*, i32, i32, ...)
-declare i8 addrspace(1)* @llvm.experimental.gc.relocate.p1i8(token, i32, i32) #0
-declare void @do_safepoint()
-
-declare i32 addrspace(1)* @new_instance() #1
-
-
-; Simple case: remove gc.relocate
-define i32 addrspace(1)* @test1(i32 addrspace(1)* %arg) gc "statepoint-example" {
-entry:
-; CHECK-LABEL: test1
-; CHECK: gc.statepoint
-; CHECK-NOT: gc.relocate
-; CHECK: ret i32 addrspace(1)* %arg
- %statepoint_token = call token (i64, i32, void ()*, i32, i32, ...) @llvm.experimental.gc.statepoint.p0f_isVoidf(i64 2882400000, i32 0, void ()* @g, i32 0, i32 0, i32 0, i32 1, i32 100, i32 addrspace(1)* %arg)
- %arg.relocated = call coldcc i8 addrspace(1)* @llvm.experimental.gc.relocate.p1i8(token %statepoint_token, i32 8, i32 8) ; (%arg, %arg)
- %arg.relocated.casted = bitcast i8 addrspace(1)* %arg.relocated to i32 addrspace(1)*
- ret i32 addrspace(1)* %arg.relocated.casted
-}
-
-; Remove gc.relocates in presence of nested relocates.
-define void @test2(i32 addrspace(1)* %base) gc "statepoint-example" {
-entry:
-; CHECK-LABEL: test2
-; CHECK: statepoint
-; CHECK-NOT: gc.relocate
-; CHECK: call void @use_obj32(i32 addrspace(1)* %ptr.gep1)
-; CHECK: call void @use_obj32(i32 addrspace(1)* %ptr.gep1)
- %ptr.gep = getelementptr i32, i32 addrspace(1)* %base, i32 15
- %ptr.gep1 = getelementptr i32, i32 addrspace(1)* %ptr.gep, i32 15
- %statepoint_token = call token (i64, i32, void ()*, i32, i32, ...) @llvm.experimental.gc.statepoint.p0f_isVoidf(i64 2882400000, i32 0, void ()* @do_safepoint, i32 0, i32 0, i32 0, i32 0, i32 addrspace(1)* %ptr.gep1, i32 addrspace(1)* %base)
- %ptr.gep1.relocated = call coldcc i8 addrspace(1)* @llvm.experimental.gc.relocate.p1i8(token %statepoint_token, i32 8, i32 7) ; (%base, %ptr.gep1)
- %ptr.gep1.relocated.casted = bitcast i8 addrspace(1)* %ptr.gep1.relocated to i32 addrspace(1)*
- %base.relocated = call coldcc i8 addrspace(1)* @llvm.experimental.gc.relocate.p1i8(token %statepoint_token, i32 8, i32 8) ; (%base, %base)
- %base.relocated.casted = bitcast i8 addrspace(1)* %base.relocated to i32 addrspace(1)*
- call void @use_obj32(i32 addrspace(1)* %ptr.gep1.relocated.casted)
- %statepoint_token1 = call token (i64, i32, void ()*, i32, i32, ...) @llvm.experimental.gc.statepoint.p0f_isVoidf(i64 2882400000, i32 0, void ()* @do_safepoint, i32 0, i32 0, i32 0, i32 0, i32 addrspace(1)* %ptr.gep1.relocated.casted, i32 addrspace(1)* %base.relocated.casted)
- %ptr.gep1.relocated2 = call coldcc i8 addrspace(1)* @llvm.experimental.gc.relocate.p1i8(token %statepoint_token1, i32 8, i32 7) ; (%base.relocated.casted, %ptr.gep1.relocated.casted)
- %ptr.gep1.relocated2.casted = bitcast i8 addrspace(1)* %ptr.gep1.relocated2 to i32 addrspace(1)*
- %base.relocated3 = call coldcc i8 addrspace(1)* @llvm.experimental.gc.relocate.p1i8(token %statepoint_token1, i32 8, i32 8) ; (%base.relocated.casted, %base.relocated.casted)
- %base.relocated3.casted = bitcast i8 addrspace(1)* %base.relocated3 to i32 addrspace(1)*
- call void @use_obj32(i32 addrspace(1)* %ptr.gep1.relocated2.casted)
- ret void
-}
-
-; landing pad gc.relocates removed by instcombine since it has no uses.
-define i32 addrspace(1)* @test3(i32 addrspace(1)* %arg) gc "statepoint-example" personality i32 8 {
-; CHECK-LABEL: test3(
-; CHECK: gc.statepoint
-; CHECK-LABEL: normal_dest:
-; CHECK-NOT: gc.relocate
-; CHECK: ret i32 addrspace(1)* %arg
-; CHECK-LABEL: unwind_dest:
-; CHECK-NOT: gc.relocate
-entry:
- %statepoint_token = invoke token (i64, i32, void ()*, i32, i32, ...) @llvm.experimental.gc.statepoint.p0f_isVoidf(i64 2882400000, i32 0, void ()* @g, i32 0, i32 0, i32 0, i32 1, i32 100, i32 addrspace(1)* %arg)
- to label %normal_dest unwind label %unwind_dest
-
-normal_dest: ; preds = %entry
- %arg.relocated1 = call coldcc i8 addrspace(1)* @llvm.experimental.gc.relocate.p1i8(token %statepoint_token, i32 8, i32 8) ; (%arg, %arg)
- %arg.relocated1.casted = bitcast i8 addrspace(1)* %arg.relocated1 to i32 addrspace(1)*
- ret i32 addrspace(1)* %arg.relocated1.casted
-
-unwind_dest: ; preds = %entry
- %lpad = landingpad token
- cleanup
- %arg.relocated = call coldcc i8 addrspace(1)* @llvm.experimental.gc.relocate.p1i8(token %lpad, i32 8, i32 8) ; (%arg, %arg)
- %arg.relocated.casted = bitcast i8 addrspace(1)* %arg.relocated to i32 addrspace(1)*
- resume token undef
-}
-
-; in presence of phi
-define void @test4(i1 %cond) gc "statepoint-example" {
-; CHECK-LABEL: test4
-entry:
- %base1 = call i32 addrspace(1)* @new_instance()
- %base2 = call i32 addrspace(1)* @new_instance()
- br i1 %cond, label %here, label %there
-
-here: ; preds = %entry
- br label %merge
-
-there: ; preds = %entry
- br label %merge
-
-merge: ; preds = %there, %here
-; CHECK-LABEL: merge:
-; CHECK-NOT: gc.relocate
-; CHECK: %ptr.gep.remat = getelementptr i32, i32 addrspace(1)* %basephi.base
- %basephi.base = phi i32 addrspace(1)* [ %base1, %here ], [ %base2, %there ], !is_base_value !0
- %basephi = phi i32 addrspace(1)* [ %base1, %here ], [ %base2, %there ]
- %ptr.gep = getelementptr i32, i32 addrspace(1)* %basephi, i32 15
- %statepoint_token = call token (i64, i32, void ()*, i32, i32, ...) @llvm.experimental.gc.statepoint.p0f_isVoidf(i64 2882400000, i32 0, void ()* @do_safepoint, i32 0, i32 0, i32 0, i32 0, i32 addrspace(1)* %basephi.base)
- %basephi.base.relocated = call coldcc i8 addrspace(1)* @llvm.experimental.gc.relocate.p1i8(token %statepoint_token, i32 7, i32 7) ; (%basephi.base, %basephi.base)
- %basephi.base.relocated.casted = bitcast i8 addrspace(1)* %basephi.base.relocated to i32 addrspace(1)*
- %ptr.gep.remat = getelementptr i32, i32 addrspace(1)* %basephi.base.relocated.casted, i32 15
- call void @use_obj32(i32 addrspace(1)* %ptr.gep.remat)
- ret void
-}
-
-; The gc.relocate type is different from %arg, but removing the gc.relocate,
-; needs a bitcast to be added from i32 addrspace(1)* to i8 addrspace(1)*
-define i8 addrspace(1)* @test5(i32 addrspace(1)* %arg) gc "statepoint-example" {
-entry:
-; CHECK-LABEL: test5
-; CHECK: gc.statepoint
-; CHECK-NOT: gc.relocate
- %statepoint_token = call token (i64, i32, void ()*, i32, i32, ...) @llvm.experimental.gc.statepoint.p0f_isVoidf(i64 2882400000, i32 0, void ()* @g, i32 0, i32 0, i32 0, i32 1, i32 100, i32 addrspace(1)* %arg)
- %arg.relocated = call coldcc i8 addrspace(1)* @llvm.experimental.gc.relocate.p1i8(token %statepoint_token, i32 8, i32 8) ; (%arg, %arg)
- ret i8 addrspace(1)* %arg.relocated
-}
-
-attributes #0 = { nounwind readonly }
-attributes #1 = { nounwind "gc-leaf-function" }
-!0 = !{}
diff --git a/llvm/test/Transforms/Util/strip-nonlinetable-debuginfo-containingtypes.ll b/llvm/test/Transforms/Util/strip-nonlinetable-debuginfo-containingtypes.ll
deleted file mode 100644
index 7a666764d1f..00000000000
--- a/llvm/test/Transforms/Util/strip-nonlinetable-debuginfo-containingtypes.ll
+++ /dev/null
@@ -1,94 +0,0 @@
-; RUN: opt -S -strip-nonlinetable-debuginfo %s -o %t.ll
-; RUN: cat %t.ll | FileCheck %s
-; RUN: cat %t.ll | FileCheck %s --check-prefix=CHECK-NEG
-;
-; This test provides coverage for setting the containing type of a DISubprogram.
-;
-; Generated an reduced from:
-; struct A {
-; virtual ~A();
-; };
-; struct B : A {};
-; B b;
-
-source_filename = "t.cpp"
-target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128"
-target triple = "x86_64-apple-macosx10.12.0"
-
-%struct.B = type { %struct.A }
-%struct.A = type { i32 (...)** }
-
-; CHECK: @b = global
-; CHECK-NOT: !dbg
-@b = global %struct.B zeroinitializer, align 8, !dbg !0
-
-declare void @_ZN1BC2Ev(%struct.B*) unnamed_addr
-
-; Function Attrs: nounwind readnone
-declare void @llvm.dbg.declare(metadata, metadata, metadata) #0
-; CHECK: define
-
-; Function Attrs: inlinehint nounwind ssp uwtable
-define linkonce_odr void @_ZN1BC1Ev(%struct.B* %this) unnamed_addr #1 align 2 !dbg !25 {
-entry:
- %this.addr = alloca %struct.B*, align 8
- store %struct.B* %this, %struct.B** %this.addr, align 8
- ; CHECK-NOT: @llvm.dbg.declare
- call void @llvm.dbg.declare(metadata %struct.B** %this.addr, metadata !30, metadata !32), !dbg !33
- %this1 = load %struct.B*, %struct.B** %this.addr, align 8
- call void @_ZN1BC2Ev(%struct.B* %this1) #2, !dbg !34
- ret void, !dbg !34
- ; CHECK: call void @_ZN1BC2Ev(%struct.B* %this1){{.*}} !dbg !
-}
-
-attributes #0 = { nounwind readnone }
-attributes #1 = { inlinehint nounwind ssp uwtable }
-attributes #2 = { nounwind }
-
-!llvm.dbg.cu = !{!2}
-!llvm.module.flags = !{!21, !22, !23}
-!llvm.ident = !{!24}
-
-; CHECK-NEG-NOT: !DI{{Basic|Composite|Derived}}Type
-
-!0 = distinct !DIGlobalVariableExpression(var: !1, expr: !DIExpression())
-!1 = !DIGlobalVariable(name: "b", scope: !2, file: !3, line: 5, type: !6, isLocal: false, isDefinition: true)
-!2 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, file: !3, producer: "clang version 4.0.0 (trunk 282583) (llvm/trunk 282611)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !5)
-!3 = !DIFile(filename: "t.cpp", directory: "/")
-!4 = !{}
-!5 = !{!0}
-!6 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "B", file: !3, line: 4, size: 64, align: 64, elements: !7, vtableHolder: !9, identifier: "_ZTS1B")
-!7 = !{!8}
-!8 = !DIDerivedType(tag: DW_TAG_inheritance, scope: !6, baseType: !9)
-!9 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "A", file: !3, line: 1, size: 64, align: 64, elements: !10, vtableHolder: !9, identifier: "_ZTS1A")
-!10 = !{!11, !17}
-!11 = !DIDerivedType(tag: DW_TAG_member, name: "_vptr$A", scope: !3, file: !3, baseType: !12, size: 64, flags: DIFlagArtificial)
-!12 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !13, size: 64)
-!13 = !DIDerivedType(tag: DW_TAG_pointer_type, name: "__vtbl_ptr_type", baseType: !14, size: 64)
-!14 = !DISubroutineType(types: !15)
-!15 = !{!16}
-!16 = !DIBasicType(name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
-!17 = !DISubprogram(name: "~A", scope: !9, file: !3, line: 2, type: !18, isLocal: false, isDefinition: false, scopeLine: 2, containingType: !9, virtuality: DW_VIRTUALITY_virtual, virtualIndex: 0, flags: DIFlagPrototyped, isOptimized: false)
-!18 = !DISubroutineType(types: !19)
-!19 = !{null, !20}
-!20 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !9, size: 64, align: 64, flags: DIFlagArtificial | DIFlagObjectPointer)
-!21 = !{i32 2, !"Dwarf Version", i32 4}
-!22 = !{i32 2, !"Debug Info Version", i32 3}
-!23 = !{i32 1, !"PIC Level", i32 2}
-!24 = !{!"clang version 4.0.0 (trunk 282583) (llvm/trunk 282611)"}
-; Only referenced by the type system.
-; CHECK-NEG-NOT: !DISubprogram(name: "~A"
-!25 = distinct !DISubprogram(name: "B", linkageName: "_ZN1BC1Ev", scope: !6, file: !3, line: 4, type: !26, isLocal: false, isDefinition: true, scopeLine: 4, flags: DIFlagArtificial | DIFlagPrototyped, isOptimized: false, unit: !2, declaration: !29, retainedNodes: !4)
-!26 = !DISubroutineType(types: !27)
-!27 = !{null, !28}
-!28 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !6, size: 64, align: 64, flags: DIFlagArtificial | DIFlagObjectPointer)
-!29 = !DISubprogram(name: "B", scope: !6, type: !26, isLocal: false, isDefinition: false, flags: DIFlagArtificial | DIFlagPrototyped, isOptimized: false)
-!30 = !DILocalVariable(name: "this", arg: 1, scope: !25, type: !31, flags: DIFlagArtificial | DIFlagObjectPointer)
-!31 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !6, size: 64, align: 64)
-!32 = !DIExpression()
-!33 = !DILocation(line: 0, scope: !25)
-!34 = !DILocation(line: 4, column: 8, scope: !25)
-
-; CHECK: !DISubprogram(name: "B", scope: ![[FILE:.*]], file: ![[FILE]],
-; CHECK-NOT: containingType:
-; CHECK-NEG-NOT: !DISubprogram(name: "B", {{.*}}, isDefinition: false
diff --git a/llvm/test/Transforms/Util/strip-nonlinetable-debuginfo-cus.ll b/llvm/test/Transforms/Util/strip-nonlinetable-debuginfo-cus.ll
deleted file mode 100644
index f7ffdf9cf9a..00000000000
--- a/llvm/test/Transforms/Util/strip-nonlinetable-debuginfo-cus.ll
+++ /dev/null
@@ -1,24 +0,0 @@
-; RUN: opt -S -strip-nonlinetable-debuginfo %s -o - | FileCheck %s
-!llvm.dbg.cu = !{!2, !6}
-!llvm.gcov = !{!3}
-!llvm.module.flags = !{!7}
-
-!1 = !DIFile(filename: "path/to/file", directory: "/path/to/dir")
-; The first CU is used for the line table, the second one is a module skeleton
-; and should be stripped.
-; CHECK: !llvm.dbg.cu = !{![[CU:[0-9]+]]}
-; CHECK: ![[CU]] = distinct !DICompileUnit({{.*}}"abc.debug"{{.*}}LineTablesOnly
-; CHECK-NOT: retainedTypes:
-; CHECK-SAME: )
-; CHECK-NOT: DICompositeType
-!2 = distinct !DICompileUnit(language: DW_LANG_C99, file: !1, producer: "clang",
- isOptimized: true, flags: "-O2", runtimeVersion: 2,
- splitDebugFilename: "abc.debug", emissionKind: FullDebug,
- retainedTypes: !4)
-!3 = !{!"path/to/file.o", !2}
-!4 = !{!5}
-!5 = !DICompositeType(tag: DW_TAG_structure_type, file: !1, identifier: "ThisWillBeStripped")
-!6 = distinct !DICompileUnit(language: DW_LANG_C99, file: !1, producer: "clang",
- splitDebugFilename: "abc.dwo", emissionKind: FullDebug,
- dwoId: 1234)
-!7 = !{i32 1, !"Debug Info Version", i32 3}
diff --git a/llvm/test/Transforms/Util/strip-nonlinetable-debuginfo-localvars.ll b/llvm/test/Transforms/Util/strip-nonlinetable-debuginfo-localvars.ll
deleted file mode 100644
index c2cb87acb2a..00000000000
--- a/llvm/test/Transforms/Util/strip-nonlinetable-debuginfo-localvars.ll
+++ /dev/null
@@ -1,36 +0,0 @@
-; RUN: opt -S -strip-nonlinetable-debuginfo %s -o - | FileCheck %s
-; CHECK: define void @f() !dbg ![[F:[0-9]+]]
-define void @f() !dbg !4 {
-entry:
- %i = alloca i32, align 4
- ; CHECK-NOT: llvm.dbg.declare
- call void @llvm.dbg.declare(metadata i32* %i, metadata !11, metadata !13), !dbg !14
- store i32 42, i32* %i, align 4, !dbg !14
- ret void, !dbg !15
-}
-
-; Function Attrs: nounwind readnone
-declare void @llvm.dbg.declare(metadata, metadata, metadata)
-
-!llvm.dbg.cu = !{!0}
-!llvm.module.flags = !{!7, !8, !9}
-!llvm.ident = !{!10}
-
-!0 = distinct !DICompileUnit(language: DW_LANG_C99, file: !1, producer: "LLVM", isOptimized: false, runtimeVersion: 0, emissionKind: 1, enums: !2)
-!1 = !DIFile(filename: "f.c", directory: "/")
-!2 = !{}
-; CHECK: ![[F]] = distinct !DISubprogram(name: "f"
-; CHECK-NOT: retainedNodes:
-; CHECK-NOT: distinct !DISubprogram(name: "f"
-!4 = distinct !DISubprogram(name: "f", scope: !1, file: !1, line: 1, type: !5, isLocal: false, isDefinition: true, scopeLine: 1, isOptimized: false, unit: !0, retainedNodes: !2)
-!5 = !DISubroutineType(types: !6)
-!6 = !{null}
-!7 = !{i32 2, !"Dwarf Version", i32 2}
-!8 = !{i32 2, !"Debug Info Version", i32 3}
-!9 = !{i32 1, !"PIC Level", i32 2}
-!10 = !{!"LLVM"}
-!11 = !DILocalVariable(name: "i", scope: !4, file: !1, line: 1, type: !12)
-!12 = !DIBasicType(name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
-!13 = !DIExpression()
-!14 = !DILocation(line: 1, column: 16, scope: !4)
-!15 = !DILocation(line: 1, column: 24, scope: !4)
diff --git a/llvm/test/Transforms/Util/strip-nonlinetable-debuginfo-loops.ll b/llvm/test/Transforms/Util/strip-nonlinetable-debuginfo-loops.ll
deleted file mode 100644
index 7144f9cb96a..00000000000
--- a/llvm/test/Transforms/Util/strip-nonlinetable-debuginfo-loops.ll
+++ /dev/null
@@ -1,71 +0,0 @@
-; RUN: opt -S -strip-nonlinetable-debuginfo %s -o %t
-; RUN: cat %t | FileCheck %s
-; RUN: cat %t | FileCheck %s --check-prefix=NEGATIVE
-; void f(volatile int *i) {
-; while (--*i) {}
-; }
-source_filename = "/tmp/loop.c"
-target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128"
-target triple = "x86_64-apple-macosx10.12.0"
-
-define void @f(i32* %i) local_unnamed_addr #0 !dbg !7 {
-entry:
- tail call void @llvm.dbg.value(metadata i32* %i, metadata !14, metadata !15), !dbg !16
- br label %while.cond, !dbg !17
-
-while.cond: ; preds = %while.cond, %entry
- %0 = load volatile i32, i32* %i, align 4, !dbg !18, !tbaa !19
- %dec = add nsw i32 %0, -1, !dbg !18
- store volatile i32 %dec, i32* %i, align 4, !dbg !18, !tbaa !19
- %tobool = icmp eq i32 %dec, 0, !dbg !17
- ; CHECK: !llvm.loop ![[LOOP:[0-9]+]]
- br i1 %tobool, label %while.end, label %while.cond, !dbg !17, !llvm.loop !23
-
-while.end: ; preds = %while.cond
- ret void, !dbg !25
-}
-
-; Function Attrs: nounwind readnone
-declare void @llvm.dbg.value(metadata, metadata, metadata) #1
-
-attributes #0 = { nounwind ssp uwtable }
-attributes #1 = { nounwind readnone }
-
-!llvm.dbg.cu = !{!0}
-!llvm.module.flags = !{!3, !4, !5}
-!llvm.ident = !{!6}
-
-; CHECK: ![[CU:.*]] = distinct !DICompileUnit(language: DW_LANG_C99,
-; CHECK-SAME: emissionKind: LineTablesOnly
-; NEGATIVE-NOT: !DICompileUnit({{.*}} emissionKind: FullDebug
-!0 = distinct !DICompileUnit(language: DW_LANG_C99, file: !1, producer: "clang version 5.0.0 (trunk 298880) (llvm/trunk 298875)", isOptimized: true, runtimeVersion: 0, emissionKind: FullDebug, enums: !2)
-!1 = !DIFile(filename: "/tmp/loop.c", directory: "/")
-!2 = !{}
-!3 = !{i32 2, !"Dwarf Version", i32 4}
-!4 = !{i32 2, !"Debug Info Version", i32 3}
-!5 = !{i32 1, !"PIC Level", i32 2}
-!6 = !{!"clang version 5.0.0 (trunk 298880) (llvm/trunk 298875)"}
-; CHECK: ![[F:[0-9]]] = distinct !DISubprogram(name: "f", scope: !1
-!7 = distinct !DISubprogram(name: "f", scope: !1, file: !1, line: 1, type: !8, isLocal: false, isDefinition: true, scopeLine: 1, flags: DIFlagPrototyped, isOptimized: true, unit: !0, retainedNodes: !13)
-!8 = !DISubroutineType(types: !9)
-!9 = !{null, !10}
-!10 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !11, size: 64)
-!11 = !DIDerivedType(tag: DW_TAG_volatile_type, baseType: !12)
-; NEGATIVE-NOT: !DIBasicType(name: "int",
-!12 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed)
-!13 = !{!14}
-!14 = !DILocalVariable(name: "i", arg: 1, scope: !7, file: !1, line: 1, type: !10)
-!15 = !DIExpression()
-!16 = !DILocation(line: 1, column: 22, scope: !7)
-; CHECK: ![[BEGIN:[0-9]+]] = !DILocation(line: 2, column: 3, scope: ![[F]])
-!17 = !DILocation(line: 2, column: 3, scope: !7)
-!18 = !DILocation(line: 2, column: 10, scope: !7)
-!19 = !{!20, !20, i64 0}
-!20 = !{!"int", !21, i64 0}
-!21 = !{!"omnipotent char", !22, i64 0}
-!22 = !{!"Simple C/C++ TBAA"}
-; CHECK: ![[LOOP]] = distinct !{![[LOOP]], ![[BEGIN]], ![[END:[0-9]+]]}
-!23 = distinct !{!23, !17, !24}
-; CHECK: ![[END]] = !DILocation(line: 3, column: 3, scope: ![[F]])
-!24 = !DILocation(line: 3, column: 3, scope: !7)
-!25 = !DILocation(line: 4, column: 1, scope: !7)
diff --git a/llvm/test/Transforms/Util/strip-nonlinetable-debuginfo-subroutinetypes.ll b/llvm/test/Transforms/Util/strip-nonlinetable-debuginfo-subroutinetypes.ll
deleted file mode 100644
index 6dce41f56fa..00000000000
--- a/llvm/test/Transforms/Util/strip-nonlinetable-debuginfo-subroutinetypes.ll
+++ /dev/null
@@ -1,22 +0,0 @@
-; RUN: opt -S -strip-nonlinetable-debuginfo %s -o - | FileCheck %s
-; Test that subroutine types are downgraded to (void)().
-define internal i32 @"__hidden#2878_"() #0 !dbg !12 {
- ret i32 0, !dbg !634
-}
-!llvm.dbg.cu = !{!18}
-!llvm.module.flags = !{!482}
-!5 = !{}
-!2 = !{!12}
-; CHECK-NOT: DICompositeType
-; CHECK: distinct !DISubprogram(name: "f", {{.*}}, type: ![[FNTY:[0-9]+]]
-; CHECK: ![[FNTY]] = !DISubroutineType(types: ![[VOID:[0-9]+]])
-; CHECK: ![[VOID]] = !{}
-; CHECK-NOT: DICompositeType
-!12 = distinct !DISubprogram(name: "f", scope: !16, file: !16, line: 133, type: !13, isLocal: true, isDefinition: true, scopeLine: 133, flags: DIFlagPrototyped, isOptimized: true, unit: !18, retainedNodes: !5)
-!13 = !DISubroutineType(types: !14)
-!14 = !{!17}
-!16 = !DIFile(filename: "f.m", directory: "/")
-!17 = !DICompositeType(tag: DW_TAG_enumeration_type, name: "e", scope: !18, file: !16, line: 13, size: 32, align: 32, flags: DIFlagFwdDecl)
-!18 = distinct !DICompileUnit(language: DW_LANG_ObjC, file: !16, producer: "clang", isOptimized: true, runtimeVersion: 2, emissionKind: 1, enums: !14, retainedTypes: !14, globals: !5, imports: !5)
-!482 = !{i32 2, !"Debug Info Version", i32 3}
-!634 = !DILocation(line: 143, column: 5, scope: !12)
OpenPOWER on IntegriCloud