[llvm] r295594 - Add a DebugCounter for PredicateInfo renaming, and an associated test

Daniel Berlin via llvm-commits llvm-commits at lists.llvm.org
Sat Feb 18 20:29:02 PST 2017


Author: dannyb
Date: Sat Feb 18 22:29:01 2017
New Revision: 295594

URL: http://llvm.org/viewvc/llvm-project?rev=295594&view=rev
Log:
Add a DebugCounter for PredicateInfo renaming, and an associated test

Added:
    llvm/trunk/test/Other/debugcounter.ll
Modified:
    llvm/trunk/lib/Transforms/Utils/PredicateInfo.cpp

Modified: llvm/trunk/lib/Transforms/Utils/PredicateInfo.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Utils/PredicateInfo.cpp?rev=295594&r1=295593&r2=295594&view=diff
==============================================================================
--- llvm/trunk/lib/Transforms/Utils/PredicateInfo.cpp (original)
+++ llvm/trunk/lib/Transforms/Utils/PredicateInfo.cpp Sat Feb 18 22:29:01 2017
@@ -31,6 +31,7 @@
 #include "llvm/IR/Module.h"
 #include "llvm/IR/PatternMatch.h"
 #include "llvm/Support/Debug.h"
+#include "llvm/Support/DebugCounter.h"
 #include "llvm/Support/FormattedStream.h"
 #include "llvm/Transforms/Scalar.h"
 #include <algorithm>
@@ -48,6 +49,9 @@ INITIALIZE_PASS_END(PredicateInfoPrinter
 static cl::opt<bool> VerifyPredicateInfo(
     "verify-predicateinfo", cl::init(false), cl::Hidden,
     cl::desc("Verify PredicateInfo in legacy printer pass."));
+DEBUG_COUNTER(RenameCounter, "predicateinfo-rename",
+              "Controls which variables are renamed with predicateinfo");
+
 namespace llvm {
 namespace PredicateInfoClasses {
 enum LocalNum {
@@ -578,6 +582,10 @@ void PredicateInfo::renameUses(SmallPtrS
       // Skip values, only want to rename the uses
       if (VD.Def || PossibleCopy)
         continue;
+      if (!DebugCounter::shouldExecute(RenameCounter)) {
+        DEBUG(dbgs() << "Skipping execution due to debug counter\n");
+        continue;
+      }
       ValueDFS &Result = RenameStack.back();
 
       // If the possible copy dominates something, materialize our stack up to

Added: llvm/trunk/test/Other/debugcounter.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Other/debugcounter.ll?rev=295594&view=auto
==============================================================================
--- llvm/trunk/test/Other/debugcounter.ll (added)
+++ llvm/trunk/test/Other/debugcounter.ll Sat Feb 18 22:29:01 2017
@@ -0,0 +1,39 @@
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
+;; Test that, with debug counters on, we don't rename the first info, only the second
+; RUN: opt -debug-counter=predicateinfo-rename-skip=1,predicateinfo-rename-count=1 -print-predicateinfo -analyze  < %s 2>&1 | FileCheck %s
+define fastcc void @barney() {
+; CHECK-LABEL: @barney(
+; CHECK-NEXT:  bb:
+; CHECK-NEXT:    br label [[BB22:%.*]]
+; CHECK:       bb22:
+; CHECK-NEXT:    [[TMP23:%.*]] = icmp eq i32 undef, 2
+; CHECK:         [[TMP23_0:%.*]] = call i1 @llvm.ssa.copy.i1(i1 [[TMP23]])
+; CHECK-NEXT:    br i1 [[TMP23]], label [[BB29:%.*]], label [[BB35:%.*]]
+; CHECK:       bb29:
+; CHECK:         [[TMP23_0_1:%.*]] = call i1 @llvm.ssa.copy.i1(i1 [[TMP23_0]])
+; CHECK-NEXT:    br i1 [[TMP23]], label [[BB33:%.*]], label [[BB35]]
+; CHECK:       bb33:
+; CHECK-NEXT:    br i1 [[TMP23_0_1]], label [[BB35]], label [[BB35]]
+; CHECK:       bb35:
+; CHECK-NEXT:    unreachable
+;
+bb:
+  br label %bb22
+bb22:                                             ; preds = %bb21
+  %tmp23 = icmp eq i32 undef, 2
+  br i1 %tmp23, label %bb29, label %bb35
+
+
+bb29:                                             ; preds = %bb28
+;; We will not rename this one (we will still generate a copy of a copy for the next one)
+  br i1 %tmp23, label %bb33, label %bb35
+
+
+bb33:                                             ; preds = %bb31
+;; We will rename this one
+  br i1 %tmp23, label %bb35, label %bb35
+
+bb35:                                             ; preds = %bb33, %bb29, %bb22
+  unreachable
+}
+




More information about the llvm-commits mailing list