1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-22 02:33:06 +01:00

Fix the really bizarre stuff that happened last night in the tester

due to non-numeric diff failures that caused fpcmp to go into infinite loops

llvm-svn: 14098
This commit is contained in:
Chris Lattner 2004-06-09 18:28:53 +00:00
parent a07033fecd
commit 69b6c53c78

View File

@ -54,6 +54,10 @@ static bool isNumberChar(char C) {
}
static char *BackupNumber(char *Pos, char *FirstChar) {
// If we didn't stop in the middle of a number, don't backup.
if (!isNumberChar(*Pos)) return Pos;
// Otherwise, return to the start of the number.
while (Pos > FirstChar && isNumberChar(Pos[-1]))
--Pos;
return Pos;
@ -61,8 +65,16 @@ static char *BackupNumber(char *Pos, char *FirstChar) {
static void CompareNumbers(char *&F1P, char *&F2P, char *F1End, char *F2End) {
char *F1NumEnd, *F2NumEnd;
double V1 = strtod(F1P, &F1NumEnd);
double V2 = strtod(F2P, &F2NumEnd);
double V1, V2;
// If we stop on numbers, compare their difference.
if (isNumberChar(*F1P) && isNumberChar(*F2P)) {
V1 = strtod(F1P, &F1NumEnd);
V2 = strtod(F2P, &F2NumEnd);
} else {
// Otherwise, the diff failed.
F1NumEnd = F1P;
F2NumEnd = F2P;
}
if (F1NumEnd == F1P || F2NumEnd == F2P) {
std::cerr << "Comparison failed, not a numeric difference.\n";