summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--llvm/test/tools/llvm-opt-report/Inputs/q3.c14
-rw-r--r--llvm/test/tools/llvm-opt-report/Inputs/q3.yaml98
-rw-r--r--llvm/test/tools/llvm-opt-report/func-3.test25
-rw-r--r--llvm/tools/llvm-opt-report/OptReport.cpp2
4 files changed, 138 insertions, 1 deletions
diff --git a/llvm/test/tools/llvm-opt-report/Inputs/q3.c b/llvm/test/tools/llvm-opt-report/Inputs/q3.c
new file mode 100644
index 00000000000..885f91283ab
--- /dev/null
+++ b/llvm/test/tools/llvm-opt-report/Inputs/q3.c
@@ -0,0 +1,14 @@
+void bar();
+void foo(int n) {
+ for (int i = 0; i < n; ++i)
+ bar();
+}
+
+void quack() {
+ foo(4);
+}
+
+void quack2() {
+ foo(8);
+}
+
diff --git a/llvm/test/tools/llvm-opt-report/Inputs/q3.yaml b/llvm/test/tools/llvm-opt-report/Inputs/q3.yaml
new file mode 100644
index 00000000000..f95d7bdc02e
--- /dev/null
+++ b/llvm/test/tools/llvm-opt-report/Inputs/q3.yaml
@@ -0,0 +1,98 @@
+--- !Missed
+Pass: inline
+Name: NoDefinition
+DebugLoc: { File: Inputs/q3.c, Line: 4, Column: 5 }
+Function: foo
+Args:
+ - Callee: bar
+ - String: ' will not be inlined into '
+ - Caller: foo
+ - String: ' because its definition is unavailable'
+...
+--- !Analysis
+Pass: inline
+Name: CanBeInlined
+DebugLoc: { File: Inputs/q3.c, Line: 8, Column: 3 }
+Function: quack
+Args:
+ - Callee: foo
+ - String: ' can be inlined into '
+ - Caller: quack
+ - String: ' with cost='
+ - Cost: '40'
+ - String: ' (threshold='
+ - Threshold: '275'
+ - String: ')'
+...
+--- !Passed
+Pass: inline
+Name: Inlined
+DebugLoc: { File: Inputs/q3.c, Line: 8, Column: 3 }
+Function: quack
+Args:
+ - Callee: foo
+ - String: ' inlined into '
+ - Caller: quack
+...
+--- !Passed
+Pass: loop-unroll
+Name: FullyUnrolled
+DebugLoc: { File: Inputs/q3.c, Line: 3, Column: 3 }
+Function: quack
+Args:
+ - String: 'completely unrolled loop with '
+ - UnrollCount: '4'
+ - String: ' iterations'
+...
+--- !Analysis
+Pass: inline
+Name: CanBeInlined
+DebugLoc: { File: Inputs/q3.c, Line: 12, Column: 3 }
+Function: quack2
+Args:
+ - Callee: foo
+ - String: ' can be inlined into '
+ - Caller: quack2
+ - String: ' with cost='
+ - Cost: '40'
+ - String: ' (threshold='
+ - Threshold: '275'
+ - String: ')'
+...
+--- !Passed
+Pass: inline
+Name: Inlined
+DebugLoc: { File: Inputs/q3.c, Line: 12, Column: 3 }
+Function: quack2
+Args:
+ - Callee: foo
+ - String: ' inlined into '
+ - Caller: quack2
+...
+--- !Passed
+Pass: loop-unroll
+Name: FullyUnrolled
+DebugLoc: { File: Inputs/q3.c, Line: 3, Column: 3 }
+Function: quack2
+Args:
+ - String: 'completely unrolled loop with '
+ - UnrollCount: '8'
+ - String: ' iterations'
+...
+--- !Analysis
+Pass: loop-vectorize
+Name: CantVectorizeCall
+DebugLoc: { File: Inputs/q3.c, Line: 4, Column: 5 }
+Function: foo
+Args:
+ - String: 'loop not vectorized: '
+ - String: call instruction cannot be vectorized
+...
+--- !Missed
+Pass: loop-vectorize
+Name: MissedDetails
+DebugLoc: { File: Inputs/q3.c, Line: 3, Column: 3 }
+Function: foo
+Args:
+ - String: 'loop not vectorized: use -Rpass-analysis=loop-vectorize for more info'
+...
diff --git a/llvm/test/tools/llvm-opt-report/func-3.test b/llvm/test/tools/llvm-opt-report/func-3.test
new file mode 100644
index 00000000000..dca526c3408
--- /dev/null
+++ b/llvm/test/tools/llvm-opt-report/func-3.test
@@ -0,0 +1,25 @@
+RUN: llvm-opt-report -r %p %p/Inputs/q3.yaml | FileCheck -strict-whitespace %s
+
+; CHECK: < {{.*[/\]}}q3.c
+; CHECK-NEXT: 1 | void bar();
+; CHECK-NEXT: 2 | void foo(int n) {
+; CHECK-NEXT: {{\[\[}}
+; CHECK-NEXT: > foo:
+; CHECK-NEXT: 3 | for (int i = 0; i < n; ++i)
+; CHECK-NEXT: > quack:
+; CHECK-NEXT: 3 U4 | for (int i = 0; i < n; ++i)
+; CHECK-NEXT: > quack2:
+; CHECK-NEXT: 3 U8 | for (int i = 0; i < n; ++i)
+; CHECK-NEXT: {{\]\]}}
+; CHECK-NEXT: 4 | bar();
+; CHECK-NEXT: 5 | }
+; CHECK-NEXT: 6 |
+; CHECK-NEXT: 7 | void quack() {
+; CHECK-NEXT: 8 I | foo(4);
+; CHECK-NEXT: 9 | }
+; CHECK-NEXT: 10 |
+; CHECK-NEXT: 11 | void quack2() {
+; CHECK-NEXT: 12 I | foo(8);
+; CHECK-NEXT: 13 | }
+; CHECK-NEXT: 14 |
+
diff --git a/llvm/tools/llvm-opt-report/OptReport.cpp b/llvm/tools/llvm-opt-report/OptReport.cpp
index 0f0faa832bd..d067df5ecad 100644
--- a/llvm/tools/llvm-opt-report/OptReport.cpp
+++ b/llvm/tools/llvm-opt-report/OptReport.cpp
@@ -132,7 +132,7 @@ struct OptReportLocationInfo {
return true;
else if (InterleaveCount > RHS.InterleaveCount)
return false;
- else if (InterleaveCount < RHS.InterleaveCount)
+ else if (UnrollCount < RHS.UnrollCount)
return true;
return false;
}
OpenPOWER on IntegriCloud