Do not by default minimize remarks
authorJohannes Doerfert <doerfert@cs.uni-saarland.de>
Tue, 12 Apr 2016 16:09:44 +0000 (16:09 +0000)
committerJohannes Doerfert <doerfert@cs.uni-saarland.de>
Tue, 12 Apr 2016 16:09:44 +0000 (16:09 +0000)
  We used checks to minimize the number of remarks we present to a user
  but these checks can become expensive, especially since all wrapping
  assumptions are emitted separately. Because there is not benefit for a
  "headless" run we put these checks under a command line flag. Thus, if
  the flag is not given we will emit "non-effective" remarks, e.g.,
  duplicates and revert to the old behaviour if it is given. As this
  also changes the internal representation of some sets we set the flag
  by default for our unit tests.

llvm-svn: 266087

polly/lib/Analysis/ScopInfo.cpp
polly/test/lit.site.cfg.in
polly/test/update_check.py

index 27c2002..a59e152 100644 (file)
@@ -67,6 +67,11 @@ STATISTIC(RichScopFound, "Number of Scops containing a loop");
 // are also unlikely to result in good code
 static int const MaxConjunctsInDomain = 20;
 
+static cl::opt<bool> PollyRemarksMinimal(
+    "polly-remarks-minimal",
+    cl::desc("Do not emit remarks about assumptions that are known"),
+    cl::Hidden, cl::ZeroOrMore, cl::init(false), cl::cat(PollyCategory));
+
 static cl::opt<bool> ModelReadOnlyScalars(
     "polly-analyze-read-only-scalars",
     cl::desc("Model read-only scalar values in the scop description"),
@@ -3450,18 +3455,20 @@ static std::string toString(AssumptionKind Kind) {
 
 bool Scop::trackAssumption(AssumptionKind Kind, __isl_keep isl_set *Set,
                            DebugLoc Loc, AssumptionSign Sign) {
-  if (Sign == AS_ASSUMPTION) {
-    if (isl_set_is_subset(Context, Set))
-      return false;
+  if (PollyRemarksMinimal) {
+    if (Sign == AS_ASSUMPTION) {
+      if (isl_set_is_subset(Context, Set))
+        return false;
 
-    if (isl_set_is_subset(AssumedContext, Set))
-      return false;
-  } else {
-    if (isl_set_is_disjoint(Set, Context))
-      return false;
+      if (isl_set_is_subset(AssumedContext, Set))
+        return false;
+    } else {
+      if (isl_set_is_disjoint(Set, Context))
+        return false;
 
-    if (isl_set_is_subset(Set, InvalidContext))
-      return false;
+      if (isl_set_is_subset(Set, InvalidContext))
+        return false;
+    }
   }
 
   auto &F = *getRegion().getEntry()->getParent();
index be469a5..c94e51c 100644 (file)
@@ -37,10 +37,12 @@ if config.link_polly_into_tools == '' or \
     config.substitutions.append(('%loadPolly', '-load '
                                  + config.polly_lib_dir + '/LLVMPolly@LLVM_SHLIBEXT@'
                                  + ' -polly-process-unprofitable '
+                                 + ' -polly-remarks-minimal '
                                  ))
 else:
     config.substitutions.append(('%loadPolly', ''
                                  + ' -polly-process-unprofitable '
+                                 + ' -polly-remarks-minimal '
                                  ))
 
 # Let the main config do the real work.
index a849b8e..7350f54 100644 (file)
@@ -283,6 +283,7 @@ def main():
                 if not link_polly_into_tools:
                     newtool += ['-load',os.path.join(polly_lib_dir,'LLVMPolly' + shlibext)]
                 newtool.append('-polly-process-unprofitable')
+                newtool.append('-polly-remarks-minimal')
             elif toolarg == '2>&1':
                 optstderr = subprocess.STDOUT
             else: