summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTobias Grosser <tobias@grosser.es>2018-04-18 20:03:36 +0000
committerTobias Grosser <tobias@grosser.es>2018-04-18 20:03:36 +0000
commitfcc3ad5d3c1db569ef2ee9f584d17b6fd4e30801 (patch)
tree6bdf39306a5fc4043b888d6b3d295c9f45df408f
parent16fe49a95156b346c033468e88db9e16c4cf95e5 (diff)
downloadbcm5719-llvm-fcc3ad5d3c1db569ef2ee9f584d17b6fd4e30801.tar.gz
bcm5719-llvm-fcc3ad5d3c1db569ef2ee9f584d17b6fd4e30801.zip
[ScopDetect / ScopInfo] Get statistics for scops without any loop correctly
Make sure we also counts scops not containing any loops. llvm-svn: 330285
-rw-r--r--polly/lib/Analysis/ScopDetection.cpp11
-rw-r--r--polly/lib/Analysis/ScopInfo.cpp5
-rw-r--r--polly/test/ScopDetect/statistics.ll26
3 files changed, 37 insertions, 5 deletions
diff --git a/polly/lib/Analysis/ScopDetection.cpp b/polly/lib/Analysis/ScopDetection.cpp
index 362580f8f31..20e87c42014 100644
--- a/polly/lib/Analysis/ScopDetection.cpp
+++ b/polly/lib/Analysis/ScopDetection.cpp
@@ -251,6 +251,7 @@ StringRef polly::PollySkipFnAttr = "polly.skip.fn";
STATISTIC(NumScopRegions, "Number of scops");
STATISTIC(NumLoopsInScop, "Number of loops in scops");
+STATISTIC(NumScopsDepthZero, "Number of scops with maximal loop depth 0");
STATISTIC(NumScopsDepthOne, "Number of scops with maximal loop depth 1");
STATISTIC(NumScopsDepthTwo, "Number of scops with maximal loop depth 2");
STATISTIC(NumScopsDepthThree, "Number of scops with maximal loop depth 3");
@@ -262,6 +263,8 @@ STATISTIC(NumProfScopRegions, "Number of scops (profitable scops only)");
STATISTIC(NumLoopsInProfScop,
"Number of loops in scops (profitable scops only)");
STATISTIC(NumLoopsOverall, "Number of total loops");
+STATISTIC(NumProfScopsDepthZero,
+ "Number of scops with maximal loop depth 0 (profitable scops only)");
STATISTIC(NumProfScopsDepthOne,
"Number of scops with maximal loop depth 1 (profitable scops only)");
STATISTIC(NumProfScopsDepthTwo,
@@ -1757,7 +1760,9 @@ static void updateLoopCountStatistic(ScopDetection::LoopStats Stats,
NumLoopsInScop += Stats.NumLoops;
MaxNumLoopsInScop =
std::max(MaxNumLoopsInScop.getValue(), (unsigned)Stats.NumLoops);
- if (Stats.MaxDepth == 1)
+ if (Stats.MaxDepth == 0)
+ NumScopsDepthZero++;
+ else if (Stats.MaxDepth == 1)
NumScopsDepthOne++;
else if (Stats.MaxDepth == 2)
NumScopsDepthTwo++;
@@ -1773,7 +1778,9 @@ static void updateLoopCountStatistic(ScopDetection::LoopStats Stats,
NumLoopsInProfScop += Stats.NumLoops;
MaxNumLoopsInProfScop =
std::max(MaxNumLoopsInProfScop.getValue(), (unsigned)Stats.NumLoops);
- if (Stats.MaxDepth == 1)
+ if (Stats.MaxDepth == 0)
+ NumProfScopsDepthZero++;
+ else if (Stats.MaxDepth == 1)
NumProfScopsDepthOne++;
else if (Stats.MaxDepth == 2)
NumProfScopsDepthTwo++;
diff --git a/polly/lib/Analysis/ScopInfo.cpp b/polly/lib/Analysis/ScopInfo.cpp
index d0ba0586d19..90185b92eb5 100644
--- a/polly/lib/Analysis/ScopInfo.cpp
+++ b/polly/lib/Analysis/ScopInfo.cpp
@@ -126,6 +126,7 @@ STATISTIC(NumLoopsInScop, "Number of loops in scops");
STATISTIC(NumBoxedLoops, "Number of boxed loops in SCoPs after ScopInfo");
STATISTIC(NumAffineLoops, "Number of affine loops in SCoPs after ScopInfo");
+STATISTIC(NumScopsDepthZero, "Number of scops with maximal loop depth 0");
STATISTIC(NumScopsDepthOne, "Number of scops with maximal loop depth 1");
STATISTIC(NumScopsDepthTwo, "Number of scops with maximal loop depth 2");
STATISTIC(NumScopsDepthThree, "Number of scops with maximal loop depth 3");
@@ -5001,7 +5002,9 @@ void updateLoopCountStatistic(ScopDetection::LoopStats Stats,
MaxNumLoopsInScop =
std::max(MaxNumLoopsInScop.getValue(), (unsigned)Stats.NumLoops);
- if (Stats.MaxDepth == 1)
+ if (Stats.MaxDepth == 0)
+ NumScopsDepthZero++;
+ else if (Stats.MaxDepth == 1)
NumScopsDepthOne++;
else if (Stats.MaxDepth == 2)
NumScopsDepthTwo++;
diff --git a/polly/test/ScopDetect/statistics.ll b/polly/test/ScopDetect/statistics.ll
index da78821c2ef..daae08dde06 100644
--- a/polly/test/ScopDetect/statistics.ll
+++ b/polly/test/ScopDetect/statistics.ll
@@ -7,17 +7,24 @@
; CHECK-DAG: 11 polly-detect - Number of loops in scops (profitable scops only)
; CHECK-DAG: 11 polly-detect - Number of loops in scops
; CHECK-DAG: 11 polly-detect - Number of total loops
-; CHECK-DAG: 5 polly-detect - Number of scops (profitable scops only)
+; CHECK-DAG: 6 polly-detect - Number of scops (profitable scops only)
; CHECK-DAG: 1 polly-detect - Number of scops with maximal loop depth 4 (profitable scops only)
; CHECK-DAG: 2 polly-detect - Number of scops with maximal loop depth 1 (profitable scops only)
; CHECK-DAG: 1 polly-detect - Number of scops with maximal loop depth 3 (profitable scops only)
; CHECK-DAG: 1 polly-detect - Number of scops with maximal loop depth 2 (profitable scops only)
-; CHECK-DAG: 5 polly-detect - Number of scops
+; CHECK-DAG: 1 polly-detect - Number of scops with maximal loop depth 0 (profitable scops only)
+; CHECK-DAG: 6 polly-detect - Number of scops
; CHECK-DAG: 1 polly-detect - Number of scops with maximal loop depth 4
; CHECK-DAG: 2 polly-detect - Number of scops with maximal loop depth 1
; CHECK-DAG: 1 polly-detect - Number of scops with maximal loop depth 3
; CHECK-DAG: 1 polly-detect - Number of scops with maximal loop depth 2
+; CHECK-DAG: 1 polly-detect - Number of scops with maximal loop depth 0
+; void foo_0d(float *A) {
+; if (true)
+; A[0] += i;
+; }
+;
; void foo_1d(float *A) {
; for (long i = 0; i < 1024; i++)
; A[i] += i;
@@ -50,6 +57,21 @@
; }
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
+define void @foo_0d(float* %A) {
+bb:
+ br label %bb1
+
+bb1:
+ br i1 true, label %exit, label %block
+
+block:
+ store float 42.0, float* %A
+ br label %exit
+
+exit:
+ ret void
+}
+
define void @foo_1d(float* %A) {
bb:
br label %bb1
OpenPOWER on IntegriCloud