[llvm-commits] CVS: llvm/lib/Support/FileUtilities.cpp
Chris Lattner
sabre at nondot.org
Mon Aug 1 18:17:01 PDT 2005
On Mon, 1 Aug 2005, Reid Spencer wrote:
> While I don't know anything about "D", the "d" control character is used for
> signed decimal integers the same as %i. If you pass a float in there to
> sprintf and friends, you're going to get garbage at best and a crash at
> worst.
Completely unrelated. This just allows fpcmp to parse "1.0D3" as "1.0e3",
i.e. "1000".
-Chris
> Chris Lattner wrote:
>> Changes in directory llvm/lib/Support:
>>
>> FileUtilities.cpp updated: 1.45 -> 1.46
>> ---
>> Log message:
>>
>> 200.sixtrack prints FP numbers with a very strange notation that uses D
>> instead of E for exponentials (e.g. 1.234D-43). Add support for this
>> notation.
>>
>>
>>
>> ---
>> Diffs of the changes: (+21 -3)
>>
>> FileUtilities.cpp | 24 +++++++++++++++++++++---
>> 1 files changed, 21 insertions(+), 3 deletions(-)
>>
>>
>> Index: llvm/lib/Support/FileUtilities.cpp
>> diff -u llvm/lib/Support/FileUtilities.cpp:1.45
>> llvm/lib/Support/FileUtilities.cpp:1.46
>> --- llvm/lib/Support/FileUtilities.cpp:1.45 Thu Apr 21 17:52:05 2005
>> +++ llvm/lib/Support/FileUtilities.cpp Mon Aug 1 19:11:53 2005
>> @@ -26,6 +26,8 @@
>> case '0': case '1': case '2': case '3': case '4':
>> case '5': case '6': case '7': case '8': case '9':
>> case '.': case '+': case '-':
>> + case 'D': // Strange exponential notation.
>> + case 'd': // Strange exponential notation.
>> case 'e':
>> case 'E': return true;
>> default: return false;
>> @@ -56,10 +58,26 @@
>> while (isspace(*F2P) && F2P != F2End)
>> ++F2P;
>> - // If we stop on numbers, compare their difference.
>> + // If we stop on numbers, compare their difference. Note that some
>> ugliness
>> + // is built into this to permit support for numbers that use "D" or "d"
>> as
>> + // their exponential marker, e.g. "1.234D45". This occurs in
>> 200.sixtrack in
>> + // spec2k.
>> if (isNumberChar(*F1P) && isNumberChar(*F2P)) {
>> - V1 = strtod(F1P, &F1NumEnd);
>> - V2 = strtod(F2P, &F2NumEnd);
>> + bool isDNotation;
>> + do {
>> + isDNotation = false;
>> + V1 = strtod(F1P, &F1NumEnd);
>> + V2 = strtod(F2P, &F2NumEnd);
>> +
>> + if (*F1NumEnd == 'D' || *F1NumEnd == 'd') {
>> + *F1NumEnd = 'e'; // Strange exponential notation!
>> + isDNotation = true;
>> + }
>> + if (*F2NumEnd == 'D' || *F2NumEnd == 'd') {
>> + *F2NumEnd = 'e'; // Strange exponential notation!
>> + isDNotation = true;
>> + }
>> + } while (isDNotation);
>> } else {
>> // Otherwise, the diff failed.
>> F1NumEnd = F1P;
>>
>>
>>
>> _______________________________________________
>> llvm-commits mailing list
>> llvm-commits at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>
-Chris
--
http://nondot.org/sabre/
http://llvm.org/
More information about the llvm-commits
mailing list