mirror of
https://github.com/RPCS3/llvm.git
synced 2024-11-25 12:49:50 +00:00
[llvm-opt-report] Fix unroll-count reporting
Fix the implementation of OptReportLocationInfo's operator < so that contexts with different unroll counts are reported separately. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@284957 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
bc9b41f1b1
commit
df936e34c0
14
test/tools/llvm-opt-report/Inputs/q3.c
Normal file
14
test/tools/llvm-opt-report/Inputs/q3.c
Normal 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);
|
||||
}
|
||||
|
98
test/tools/llvm-opt-report/Inputs/q3.yaml
Normal file
98
test/tools/llvm-opt-report/Inputs/q3.yaml
Normal 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'
|
||||
...
|
25
test/tools/llvm-opt-report/func-3.test
Normal file
25
test/tools/llvm-opt-report/func-3.test
Normal 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 |
|
||||
|
@ -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;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user