Commit 085d4209 authored by Tobias Grosser's avatar Tobias Grosser
Browse files

scop detection: only handle functions with loops

to detect scops in functions with no loops, use -polly-detect-scops-in-functions-without-loops

Merged from: https://llvm.org/svn/llvm-project/polly/trunk@182941

llvm-svn: 183382
parent cb70c6a5
Loading
Loading
Loading
Loading
+9 −1
Original line number Diff line number Diff line
@@ -68,6 +68,11 @@
using namespace llvm;
using namespace polly;

static cl::opt<bool>
DetectScopsWithoutLoops("polly-detect-scops-in-functions-without-loops",
                        cl::desc("Detect scops in functions without loops"),
                        cl::Hidden, cl::init(false), cl::cat(PollyCategory));

static cl::opt<std::string>
OnlyFunction("polly-only-func", cl::desc("Only run on a single function"),
             cl::value_desc("function-name"), cl::ValueRequired, cl::init(""),
@@ -625,9 +630,12 @@ void ScopDetection::printLocations(llvm::Function &F) {
}

bool ScopDetection::runOnFunction(llvm::Function &F) {
  LI = &getAnalysis<LoopInfo>();
  if (!DetectScopsWithoutLoops && LI->empty())
    return false;

  AA = &getAnalysis<AliasAnalysis>();
  SE = &getAnalysis<ScalarEvolution>();
  LI = &getAnalysis<LoopInfo>();
  RI = &getAnalysis<RegionInfo>();
  Region *TopRegion = RI->getTopLevelRegion();

+1 −1
Original line number Diff line number Diff line
;RUN: opt %loadPolly %defaultOpts -polly-cloog -analyze < %s | FileCheck %s
;RUN: opt %loadPolly %defaultOpts -polly-detect-scops-in-functions-without-loops -polly-cloog -analyze < %s | FileCheck %s

;#include <string.h>
;int A[1];
+1 −1
Original line number Diff line number Diff line
;RUN: opt %loadPolly %defaultOpts -polly-ast -analyze < %s | FileCheck %s
;RUN: opt %loadPolly %defaultOpts -polly-detect-scops-in-functions-without-loops -polly-ast -analyze < %s | FileCheck %s

;#include <string.h>
;int A[1];
+1 −1
Original line number Diff line number Diff line
; RUN: opt %loadPolly -polly-opt-isl -analyze < %s | FileCheck %s
; RUN: opt %loadPolly -polly-detect-scops-in-functions-without-loops -polly-opt-isl -analyze < %s | FileCheck %s
target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

+2 −2
Original line number Diff line number Diff line
; RUN: opt %loadPolly -polly-detect -analyze < %s | FileCheck %s
; RUN: opt %loadPolly -polly-detect -polly-codegen-scev -analyze < %s | FileCheck %s
; RUN: opt %loadPolly -polly-detect-scops-in-functions-without-loops -polly-detect -analyze < %s | FileCheck %s
; RUN: opt %loadPolly -polly-detect-scops-in-functions-without-loops -polly-detect -polly-codegen-scev -analyze < %s | FileCheck %s


;  foo(float *A, long n, long k) {