[llvm] r280414 - bugpoint: clang-format and modernize comments in ListReducer. NFC
Justin Bogner via llvm-commits
llvm-commits at lists.llvm.org
Thu Sep 1 14:04:36 PDT 2016
Author: bogner
Date: Thu Sep 1 16:04:36 2016
New Revision: 280414
URL: http://llvm.org/viewvc/llvm-project?rev=280414&view=rev
Log:
bugpoint: clang-format and modernize comments in ListReducer. NFC
Modified:
llvm/trunk/tools/bugpoint/ListReducer.h
Modified: llvm/trunk/tools/bugpoint/ListReducer.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/bugpoint/ListReducer.h?rev=280414&r1=280413&r2=280414&view=diff
==============================================================================
--- llvm/trunk/tools/bugpoint/ListReducer.h (original)
+++ llvm/trunk/tools/bugpoint/ListReducer.h Thu Sep 1 16:04:36 2016
@@ -22,33 +22,29 @@
#include <vector>
namespace llvm {
-
- extern bool BugpointIsInterrupted;
-template<typename ElTy>
-struct ListReducer {
+extern bool BugpointIsInterrupted;
+
+template <typename ElTy> struct ListReducer {
enum TestResult {
- NoFailure, // No failure of the predicate was detected
- KeepSuffix, // The suffix alone satisfies the predicate
- KeepPrefix, // The prefix alone satisfies the predicate
- InternalError // Encountered an error trying to run the predicate
+ NoFailure, // No failure of the predicate was detected
+ KeepSuffix, // The suffix alone satisfies the predicate
+ KeepPrefix, // The prefix alone satisfies the predicate
+ InternalError // Encountered an error trying to run the predicate
};
virtual ~ListReducer() {}
- // doTest - This virtual function should be overriden by subclasses to
- // implement the test desired. The testcase is only required to test to see
- // if the Kept list still satisfies the property, but if it is going to check
- // the prefix anyway, it can.
- //
- virtual TestResult doTest(std::vector<ElTy> &Prefix,
- std::vector<ElTy> &Kept,
+ /// This virtual function should be overriden by subclasses to implement the
+ /// test desired. The testcase is only required to test to see if the Kept
+ /// list still satisfies the property, but if it is going to check the prefix
+ /// anyway, it can.
+ virtual TestResult doTest(std::vector<ElTy> &Prefix, std::vector<ElTy> &Kept,
std::string &Error) = 0;
- // reduceList - This function attempts to reduce the length of the specified
- // list while still maintaining the "test" property. This is the core of the
- // "work" that bugpoint does.
- //
+ /// This function attempts to reduce the length of the specified list while
+ /// still maintaining the "test" property. This is the core of the "work"
+ /// that bugpoint does.
bool reduceList(std::vector<ElTy> &TheList, std::string &Error) {
std::vector<ElTy> empty;
std::srand(0x6e5ea738); // Seed the random number generator
@@ -82,7 +78,7 @@ struct ListReducer {
const unsigned MaxTrimIterationsWithoutBackJump = 3;
bool ShufflingEnabled = true;
-Backjump:
+ Backjump:
unsigned MidTop = TheList.size();
unsigned MaxIterations = MaxIterationsWithoutProgress;
unsigned NumOfIterationsWithoutProgress = 0;
@@ -96,8 +92,7 @@ Backjump:
// If the loop doesn't make satisfying progress, try shuffling.
// The purpose of shuffling is to avoid the heavy tails of the
// distribution (improving the speed of convergence).
- if (ShufflingEnabled &&
- NumOfIterationsWithoutProgress > MaxIterations) {
+ if (ShufflingEnabled && NumOfIterationsWithoutProgress > MaxIterations) {
std::vector<ElTy> ShuffledList(TheList);
std::random_shuffle(ShuffledList.begin(), ShuffledList.end());
errs() << "\n\n*** Testing shuffled set...\n\n";
@@ -106,7 +101,7 @@ Backjump:
// If the bug is still here, use the shuffled list.
TheList.swap(ShuffledList);
MidTop = TheList.size();
- // Must increase the shuffling treshold to avoid the small
+ // Must increase the shuffling treshold to avoid the small
// probability of inifinite looping without making progress.
MaxIterations += 2;
errs() << "\n\n*** Shuffling does not hide the bug...\n\n";
@@ -116,10 +111,10 @@ Backjump:
}
NumOfIterationsWithoutProgress = 0;
}
-
+
unsigned Mid = MidTop / 2;
- std::vector<ElTy> Prefix(TheList.begin(), TheList.begin()+Mid);
- std::vector<ElTy> Suffix(TheList.begin()+Mid, TheList.end());
+ std::vector<ElTy> Prefix(TheList.begin(), TheList.begin() + Mid);
+ std::vector<ElTy> Suffix(TheList.begin() + Mid, TheList.end());
switch (doTest(Prefix, Suffix, Error)) {
case KeepSuffix:
@@ -146,7 +141,7 @@ Backjump:
NumOfIterationsWithoutProgress++;
break;
case InternalError:
- return true; // Error was set by doTest.
+ return true; // Error was set by doTest.
}
assert(Error.empty() && "doTest did not return InternalError for error");
}
@@ -156,37 +151,38 @@ Backjump:
const int BackjumpProbability = 10;
// Okay, we trimmed as much off the top and the bottom of the list as we
- // could. If there is more than two elements in the list, try deleting
+ // could. If there is more than two elements in the list, try deleting
// interior elements and testing that.
//
if (TheList.size() > 2) {
bool Changed = true;
std::vector<ElTy> EmptyList;
unsigned TrimIterations = 0;
- while (Changed) { // Trimming loop.
+ while (Changed) { // Trimming loop.
Changed = false;
-
+
// If the binary split reduction loop made an unfortunate sequence of
// splits, the trimming loop might be left off with a huge number of
// remaining elements (large search space). Backjumping out of that
- // search space and attempting a different split can significantly
+ // search space and attempting a different split can significantly
// improve the convergence speed.
if (std::rand() % 100 < BackjumpProbability)
goto Backjump;
-
- for (unsigned i = 1; i < TheList.size()-1; ++i) { // Check interior elts
+
+ for (unsigned i = 1; i < TheList.size() - 1; ++i) {
+ // Check interior elts
if (BugpointIsInterrupted) {
errs() << "\n\n*** Reduction Interrupted, cleaning up...\n\n";
return true;
}
-
+
std::vector<ElTy> TestList(TheList);
- TestList.erase(TestList.begin()+i);
+ TestList.erase(TestList.begin() + i);
if (doTest(EmptyList, TestList, Error) == KeepSuffix) {
// We can trim down the list!
TheList.swap(TestList);
- --i; // Don't skip an element of the list
+ --i; // Don't skip an element of the list
Changed = true;
}
if (!Error.empty())
More information about the llvm-commits
mailing list