From: Duncan P. N. Exon Smith Date: Mon, 28 Jul 2014 23:25:21 +0000 (+0000) Subject: llvm-uselistorder: Add -num-shuffles option X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=a784589f579de6f8a34e6bbfcf48ebba6b01c719;p=llvm llvm-uselistorder: Add -num-shuffles option git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@214144 91177308-0d34-0410-b5e6-96231b3b80d8 --- 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; }