From: Tobias Grosser Date: Wed, 18 Apr 2018 20:03:36 +0000 (+0000) Subject: [ScopDetect / ScopInfo] Get statistics for scops without any loop correctly X-Git-Tag: llvmorg-7.0.0-rc1~7956 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=fcc3ad5d3c1db569ef2ee9f584d17b6fd4e30801;p=platform%2Fupstream%2Fllvm.git [ScopDetect / ScopInfo] Get statistics for scops without any loop correctly Make sure we also counts scops not containing any loops. llvm-svn: 330285 --- diff --git a/polly/lib/Analysis/ScopDetection.cpp b/polly/lib/Analysis/ScopDetection.cpp index 362580f..20e87c4 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 d0ba058..90185b9 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 da78821..daae08d 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