summaryrefslogtreecommitdiffstats
path: root/llvm/test
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/test')
-rw-r--r--llvm/test/Other/new-pm-lto-defaults.ll4
-rw-r--r--llvm/test/Other/opt-O2-pipeline.ll4
-rw-r--r--llvm/test/Other/opt-O3-pipeline.ll4
-rw-r--r--llvm/test/Other/opt-Os-pipeline.ll4
-rw-r--r--llvm/test/Transforms/IPConstantProp/musttail-call.ll4
-rw-r--r--llvm/test/Transforms/SCCP/ipsccp-predicated.ll68
6 files changed, 84 insertions, 4 deletions
diff --git a/llvm/test/Other/new-pm-lto-defaults.ll b/llvm/test/Other/new-pm-lto-defaults.ll
index 0633db5bb84..f78c3e8e9fa 100644
--- a/llvm/test/Other/new-pm-lto-defaults.ll
+++ b/llvm/test/Other/new-pm-lto-defaults.ll
@@ -41,6 +41,8 @@
; CHECK-O2-NEXT: Running analysis: ProfileSummaryAnalysis
; CHECK-O2-NEXT: Running analysis: OptimizationRemarkEmitterAnalysis
; CHECK-O2-NEXT: Running pass: IPSCCPPass
+; CHECK-O2-DAG: Running analysis: AssumptionAnalysis on foo
+; CHECK-O2-DAG: Running analysis: DominatorTreeAnalysis on foo
; CHECK-O2-NEXT: Running pass: CalledValuePropagationPass
; CHECK-O-NEXT: Running pass: ModuleToPostOrderCGSCCPassAdaptor<{{.*}}PostOrderFunctionAttrsPass>
; CHECK-O-NEXT: Running analysis: InnerAnalysisManagerProxy<{{.*}}SCC
@@ -56,8 +58,6 @@
; CHECK-O-NEXT: Running pass: WholeProgramDevirtPass
; CHECK-O2-NEXT: Running pass: GlobalOptPass
; CHECK-O2-NEXT: Running pass: ModuleToFunctionPassAdaptor<{{.*}}PromotePass>
-; CHECK-O2-NEXT: Running analysis: DominatorTreeAnalysis
-; CHECK-O2-NEXT: Running analysis: AssumptionAnalysis
; CHECK-O2-NEXT: Running pass: ConstantMergePass
; CHECK-O2-NEXT: Running pass: DeadArgumentEliminationPass
; CHECK-O2-NEXT: Running pass: ModuleToFunctionPassAdaptor<{{.*}}PassManager{{.*}}>
diff --git a/llvm/test/Other/opt-O2-pipeline.ll b/llvm/test/Other/opt-O2-pipeline.ll
index 96d9f22cc01..6586149a9e7 100644
--- a/llvm/test/Other/opt-O2-pipeline.ll
+++ b/llvm/test/Other/opt-O2-pipeline.ll
@@ -28,6 +28,7 @@
; CHECK-NEXT: Force set function attributes
; CHECK-NEXT: Infer set function attributes
; CHECK-NEXT: Interprocedural Sparse Conditional Constant Propagation
+; CHECK-NEXT: Unnamed pass: implement Pass::getPassName()
; CHECK-NEXT: Called Value Propagation
; CHECK-NEXT: Global Variable Optimizer
; CHECK-NEXT: Unnamed pass: implement Pass::getPassName()
@@ -273,6 +274,9 @@
; CHECK-NEXT: Module Verifier
; CHECK-NEXT: Bitcode Writer
; CHECK-NEXT: Pass Arguments:
+; CHECK-NEXT: FunctionPass Manager
+; CHECK-NEXT: Dominator Tree Construction
+; CHECK-NEXT: Pass Arguments:
; CHECK-NEXT: Target Library Information
; CHECK-NEXT: FunctionPass Manager
; CHECK-NEXT: Dominator Tree Construction
diff --git a/llvm/test/Other/opt-O3-pipeline.ll b/llvm/test/Other/opt-O3-pipeline.ll
index fc9f4fd6b31..9a2eb1bfde3 100644
--- a/llvm/test/Other/opt-O3-pipeline.ll
+++ b/llvm/test/Other/opt-O3-pipeline.ll
@@ -30,6 +30,7 @@
; CHECK-NEXT: FunctionPass Manager
; CHECK-NEXT: Call-site splitting
; CHECK-NEXT: Interprocedural Sparse Conditional Constant Propagation
+; CHECK-NEXT: Unnamed pass: implement Pass::getPassName()
; CHECK-NEXT: Called Value Propagation
; CHECK-NEXT: Global Variable Optimizer
; CHECK-NEXT: Unnamed pass: implement Pass::getPassName()
@@ -277,6 +278,9 @@
; CHECK-NEXT: Module Verifier
; CHECK-NEXT: Bitcode Writer
; CHECK-NEXT: Pass Arguments:
+; CHECK-NEXT: FunctionPass Manager
+; CHECK-NEXT: Dominator Tree Construction
+; CHECK-NEXT: Pass Arguments:
; CHECK-NEXT: Target Library Information
; CHECK-NEXT: FunctionPass Manager
; CHECK-NEXT: Dominator Tree Construction
diff --git a/llvm/test/Other/opt-Os-pipeline.ll b/llvm/test/Other/opt-Os-pipeline.ll
index 206a20a598e..0c1b275e4d7 100644
--- a/llvm/test/Other/opt-Os-pipeline.ll
+++ b/llvm/test/Other/opt-Os-pipeline.ll
@@ -28,6 +28,7 @@
; CHECK-NEXT: Force set function attributes
; CHECK-NEXT: Infer set function attributes
; CHECK-NEXT: Interprocedural Sparse Conditional Constant Propagation
+; CHECK-NEXT: Unnamed pass: implement Pass::getPassName()
; CHECK-NEXT: Called Value Propagation
; CHECK-NEXT: Global Variable Optimizer
; CHECK-NEXT: Unnamed pass: implement Pass::getPassName()
@@ -259,6 +260,9 @@
; CHECK-NEXT: Module Verifier
; CHECK-NEXT: Bitcode Writer
; CHECK-NEXT: Pass Arguments:
+; CHECK-NEXT: FunctionPass Manager
+; CHECK-NEXT: Dominator Tree Construction
+; CHECK-NEXT: Pass Arguments:
; CHECK-NEXT: Target Library Information
; CHECK-NEXT: FunctionPass Manager
; CHECK-NEXT: Dominator Tree Construction
diff --git a/llvm/test/Transforms/IPConstantProp/musttail-call.ll b/llvm/test/Transforms/IPConstantProp/musttail-call.ll
index 75877585710..567ca408099 100644
--- a/llvm/test/Transforms/IPConstantProp/musttail-call.ll
+++ b/llvm/test/Transforms/IPConstantProp/musttail-call.ll
@@ -9,7 +9,7 @@ define i8* @start(i8 %v) {
%c1 = icmp eq i8 %v, 0
br i1 %c1, label %true, label %false
true:
- ; CHECK: %ca = musttail call i8* @side_effects(i8 %v)
+ ; CHECK: %ca = musttail call i8* @side_effects(i8 0)
; CHECK: ret i8* %ca
%ca = musttail call i8* @side_effects(i8 %v)
ret i8* %ca
@@ -34,7 +34,7 @@ define internal i8* @side_effects(i8 %v) {
; is always `null`.
; The call can't be removed due to `external` call above, though.
- ; CHECK: %ca = musttail call i8* @start(i8 %v)
+ ; CHECK: %ca = musttail call i8* @start(i8 0)
%ca = musttail call i8* @start(i8 %v)
; Thus the result must be returned anyway
diff --git a/llvm/test/Transforms/SCCP/ipsccp-predicated.ll b/llvm/test/Transforms/SCCP/ipsccp-predicated.ll
new file mode 100644
index 00000000000..531fbba8f70
--- /dev/null
+++ b/llvm/test/Transforms/SCCP/ipsccp-predicated.ll
@@ -0,0 +1,68 @@
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
+; RUN: opt < %s -ipsccp -S | FileCheck %s
+
+define i32 @test1(i32 %v) {
+; CHECK-LABEL: @test1(
+; CHECK-NEXT: Entry:
+; CHECK-NEXT: [[TOBOOL1:%.*]] = icmp eq i32 [[V:%.*]], 10
+; CHECK-NEXT: br i1 [[TOBOOL1]], label [[T:%.*]], label [[F:%.*]]
+; CHECK: T:
+; CHECK-NEXT: [[R:%.*]] = call i32 @callee(i32 20)
+; CHECK-NEXT: ret i32 [[R]]
+; CHECK: F:
+; CHECK-NEXT: [[X:%.*]] = call i32 @callee(i32 [[V]])
+; CHECK-NEXT: ret i32 [[X]]
+;
+Entry:
+ %tobool1 = icmp eq i32 %v, 10
+ br i1 %tobool1, label %T, label %F
+
+T:
+ %a = add i32 %v, 10
+ %r = call i32 @callee(i32 %a)
+ ret i32 %r
+
+F:
+ %x = call i32 @callee(i32 %v)
+ ret i32 %x
+}
+
+
+define internal i32 @test2(i32 %v, i32 %c) {
+; CHECK-LABEL: @test2(
+; CHECK-NEXT: Entry:
+; CHECK-NEXT: [[TOBOOL1:%.*]] = icmp eq i32 [[V:%.*]], 99
+; CHECK-NEXT: br i1 [[TOBOOL1]], label [[T:%.*]], label [[F:%.*]]
+; CHECK: T:
+; CHECK-NEXT: [[R:%.*]] = call i32 @callee(i32 109)
+; CHECK-NEXT: ret i32 [[R]]
+; CHECK: F:
+; CHECK-NEXT: [[X:%.*]] = call i32 @callee(i32 [[V]])
+; CHECK-NEXT: ret i32 [[X]]
+;
+Entry:
+ %tobool1 = icmp eq i32 %v, %c
+ br i1 %tobool1, label %T, label %F
+
+T:
+ %a = add i32 %v, 10
+ %r = call i32 @callee(i32 %a)
+ ret i32 %r
+
+F:
+ %x = call i32 @callee(i32 %v)
+ ret i32 %x
+}
+
+define i32 @caller_test2(i32 %v) {
+; CHECK-LABEL: @caller_test2(
+; CHECK-NEXT: entry:
+; CHECK-NEXT: [[R:%.*]] = call i32 @test2(i32 [[V:%.*]], i32 99)
+; CHECK-NEXT: ret i32 [[R]]
+;
+entry:
+ %r = call i32 @test2(i32 %v, i32 99)
+ ret i32 %r
+}
+
+declare i32 @callee(i32)
OpenPOWER on IntegriCloud