diff options
author | Hal Finkel <hfinkel@anl.gov> | 2016-10-24 05:07:18 +0000 |
---|---|---|
committer | Hal Finkel <hfinkel@anl.gov> | 2016-10-24 05:07:18 +0000 |
commit | fd448408e31877c3ec602f374bf204652cf1439c (patch) | |
tree | fe610a64d7bf831f6ca162a907fd0ec940455a2e /llvm | |
parent | 531ce2831193fae550826aec3fb5acdd73772f11 (diff) | |
download | bcm5719-llvm-fd448408e31877c3ec602f374bf204652cf1439c.tar.gz bcm5719-llvm-fd448408e31877c3ec602f374bf204652cf1439c.zip |
[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
Diffstat (limited to 'llvm')
-rw-r--r-- | llvm/test/tools/llvm-opt-report/Inputs/q3.c | 14 | ||||
-rw-r--r-- | llvm/test/tools/llvm-opt-report/Inputs/q3.yaml | 98 | ||||
-rw-r--r-- | llvm/test/tools/llvm-opt-report/func-3.test | 25 | ||||
-rw-r--r-- | llvm/tools/llvm-opt-report/OptReport.cpp | 2 |
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; } |