[llvm-opt-report] Fix unroll-count reporting
authorHal Finkel <hfinkel@anl.gov>
Mon, 24 Oct 2016 05:07:18 +0000 (05:07 +0000)
committerHal Finkel <hfinkel@anl.gov>
Mon, 24 Oct 2016 05:07:18 +0000 (05:07 +0000)
Fix the implementation of OptReportLocationInfo's operator < so that contexts
with different unroll counts are reported separately.

llvm-svn: 284957

llvm/test/tools/llvm-opt-report/Inputs/q3.c [new file with mode: 0644]
llvm/test/tools/llvm-opt-report/Inputs/q3.yaml [new file with mode: 0644]
llvm/test/tools/llvm-opt-report/func-3.test [new file with mode: 0644]
llvm/tools/llvm-opt-report/OptReport.cpp

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 (file)
index 0000000..885f912
--- /dev/null
@@ -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 (file)
index 0000000..f95d7bd
--- /dev/null
@@ -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 (file)
index 0000000..dca526c
--- /dev/null
@@ -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     | 
+
index 0f0faa8..d067df5 100644 (file)
@@ -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;
   }