From a784589f579de6f8a34e6bbfcf48ebba6b01c719 Mon Sep 17 00:00:00 2001 From: "Duncan P. N. Exon Smith" Date: Mon, 28 Jul 2014 23:25:21 +0000 Subject: [PATCH] llvm-uselistorder: Add -num-shuffles option git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@214144 91177308-0d34-0410-b5e6-96231b3b80d8 --- test/Bitcode/use-list-order.ll | 2 +- tools/llvm-uselistorder/llvm-uselistorder.cpp | 23 ++++++++++++++----- 2 files changed, 18 insertions(+), 7 deletions(-) diff --git a/test/Bitcode/use-list-order.ll b/test/Bitcode/use-list-order.ll index 6a1fedc1ff4..ac7307b2711 100644 --- a/test/Bitcode/use-list-order.ll +++ b/test/Bitcode/use-list-order.ll @@ -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) diff --git a/tools/llvm-uselistorder/llvm-uselistorder.cpp b/tools/llvm-uselistorder/llvm-uselistorder.cpp index d86b592c928..edd9b395426 100644 --- a/tools/llvm-uselistorder/llvm-uselistorder.cpp +++ b/tools/llvm-uselistorder/llvm-uselistorder.cpp @@ -43,6 +43,11 @@ static cl::opt InputFilename(cl::Positional, static cl::opt SaveTemps("save-temps", cl::desc("Save temp files"), cl::init(false)); +static cl::opt + 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; } -- 2.34.1