]> granicus.if.org Git - llvm/commitdiff
llvm-uselistorder: Add -num-shuffles option
authorDuncan P. N. Exon Smith <dexonsmith@apple.com>
Mon, 28 Jul 2014 23:25:21 +0000 (23:25 +0000)
committerDuncan P. N. Exon Smith <dexonsmith@apple.com>
Mon, 28 Jul 2014 23:25:21 +0000 (23:25 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@214144 91177308-0d34-0410-b5e6-96231b3b80d8

test/Bitcode/use-list-order.ll
tools/llvm-uselistorder/llvm-uselistorder.cpp

index 6a1fedc1ff4941d39983e32ffd04d94df411ffff..ac7307b27114efab0f64d8a0b4f0fe0bdc4f7b9c 100644 (file)
@@ -1,4 +1,4 @@
-; RUN: llvm-uselistorder < %s -preserve-bc-use-list-order
+; RUN: llvm-uselistorder < %s -preserve-bc-use-list-order -num-shuffles=5
 
 @a = global [4 x i1] [i1 0, i1 1, i1 0, i1 1]
 @b = alias i1* getelementptr ([4 x i1]* @a, i64 0, i64 2)
index d86b592c9284ee7a8aed48b3e8f60c075b7bc78d..edd9b39542613029266124f5f45f01c3c0fe0127 100644 (file)
@@ -43,6 +43,11 @@ static cl::opt<std::string> InputFilename(cl::Positional,
 static cl::opt<bool> SaveTemps("save-temps", cl::desc("Save temp files"),
                                cl::init(false));
 
+static cl::opt<unsigned>
+    NumShuffles("num-shuffles",
+                cl::desc("Number of times to shuffle and verify use-lists"),
+                cl::init(1));
+
 namespace {
 
 struct TempFile {
@@ -370,13 +375,19 @@ int main(int argc, char **argv) {
     return 0;
   }
 
-  shuffleUseLists(*M);
-  if (!verifyBitcodeUseListOrder(*M))
-    report_fatal_error("bitcode use-list order changed");
+  for (unsigned I = 0, E = NumShuffles; I != E; ++I) {
+    DEBUG(dbgs() << "*** iteration: " << I << " ***\n");
+
+    // Shuffle with a different seed each time so that use-lists that aren't
+    // modified the first time are likely to be modified the next time.
+    shuffleUseLists(*M, I);
+    if (!verifyBitcodeUseListOrder(*M))
+      report_fatal_error("bitcode use-list order changed");
 
-  if (shouldPreserveAssemblyUseListOrder())
-    if (!verifyAssemblyUseListOrder(*M))
-      report_fatal_error("assembly use-list order changed");
+    if (shouldPreserveAssemblyUseListOrder())
+      if (!verifyAssemblyUseListOrder(*M))
+        report_fatal_error("assembly use-list order changed");
+  }
 
   return 0;
 }