[llvm-opt-report] Fix unroll-count reporting

Fix the implementation of OptReportLocationInfo's operator < so that contexts
with different unroll counts are reported separately.

llvm-svn: 284957
This commit is contained in:
Hal Finkel 2016-10-24 05:07:18 +00:00
parent 531ce28311
commit fd448408e3
4 changed files with 138 additions and 1 deletions

View File

@ -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);
}

View File

@ -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'
...

View File

@ -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 |

View 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;
}