Revert "Further tweaks to hopefully make the PathDiagnostic emission more deterministic."

llvm-svn: 163445
This commit is contained in:
Ted Kremenek 2012-09-08 01:24:53 +00:00
parent 5860e329a4
commit af4cc7eab1
1 changed files with 18 additions and 8 deletions

View File

@ -217,8 +217,10 @@ static llvm::Optional<bool> comparePiece(PathDiagnosticPiece &X,
}
FullSourceLoc XL = X.getLocation().asLocation();
FullSourceLoc YL = Y.getLocation().asLocation();
if (XL != YL)
return XL < YL;
if (XL < YL)
return true;
if (YL < XL)
return false;
const std::string &XS = X.getString();
const std::string &YS = Y.getString();
if (XS != YS)
@ -227,8 +229,10 @@ static llvm::Optional<bool> comparePiece(PathDiagnosticPiece &X,
}
static bool comparePathPieces(const PathPieces &X, const PathPieces &Y) {
if (X.size() != Y.size())
return X.size() < Y.size();
if (X.size() < Y.size())
return true;
if (X.size() > Y.size())
return false;
// Compare individual parts of the path.
assert(X.size() == Y.size());
for (unsigned i = 0, n = X.size(); i < n; ++i) {
@ -245,20 +249,26 @@ struct CompareDiagnostics {
// First compare by location
const FullSourceLoc &XLoc = X->getLocation().asLocation();
const FullSourceLoc &YLoc = Y->getLocation().asLocation();
if (XLoc != YLoc)
return XLoc < YLoc;
if (XLoc < YLoc)
return true;
if (YLoc < XLoc)
return false;
// Next, compare by bug type.
StringRef XBugType = X->getBugType();
StringRef YBugType = Y->getBugType();
if (XBugType < YBugType)
return true;
if (XBugType != YBugType)
return XBugType < YBugType;
return false;
// Next, compare by bug description.
StringRef XDesc = X->getVerboseDescription();
StringRef YDesc = Y->getVerboseDescription();
if (XDesc < YDesc)
return true;
if (XDesc != YDesc)
return XDesc < YDesc;
return false;
// Fall back to comparing path pieces.
return comparePathPieces(X->path, Y->path);