mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-01-31 20:51:52 +01:00
Move ftostr into its last user (cppbackend) and simplify it a bit.
New code should use raw_ostream. llvm-svn: 153326
This commit is contained in:
parent
9b75081b7f
commit
01e4003c0f
@ -15,12 +15,7 @@
|
|||||||
#define LLVM_ADT_STRINGEXTRAS_H
|
#define LLVM_ADT_STRINGEXTRAS_H
|
||||||
|
|
||||||
#include "llvm/Support/DataTypes.h"
|
#include "llvm/Support/DataTypes.h"
|
||||||
#include "llvm/ADT/APFloat.h"
|
|
||||||
#include "llvm/ADT/DenseMapInfo.h"
|
|
||||||
#include "llvm/ADT/StringRef.h"
|
#include "llvm/ADT/StringRef.h"
|
||||||
#include <cctype>
|
|
||||||
#include <cstdio>
|
|
||||||
#include <string>
|
|
||||||
|
|
||||||
namespace llvm {
|
namespace llvm {
|
||||||
template<typename T> class SmallVectorImpl;
|
template<typename T> class SmallVectorImpl;
|
||||||
@ -101,22 +96,6 @@ static inline std::string itostr(int64_t X) {
|
|||||||
return utostr(static_cast<uint64_t>(X));
|
return utostr(static_cast<uint64_t>(X));
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline std::string ftostr(double V) {
|
|
||||||
char Buffer[200];
|
|
||||||
sprintf(Buffer, "%20.6e", V);
|
|
||||||
char *B = Buffer;
|
|
||||||
while (*B == ' ') ++B;
|
|
||||||
return B;
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline std::string ftostr(const APFloat& V) {
|
|
||||||
if (&V.getSemantics() == &APFloat::IEEEdouble)
|
|
||||||
return ftostr(V.convertToDouble());
|
|
||||||
else if (&V.getSemantics() == &APFloat::IEEEsingle)
|
|
||||||
return ftostr((double)V.convertToFloat());
|
|
||||||
return "<unknown format in ftostr>"; // error
|
|
||||||
}
|
|
||||||
|
|
||||||
/// StrInStrNoCase - Portable version of strcasestr. Locates the first
|
/// StrInStrNoCase - Portable version of strcasestr. Locates the first
|
||||||
/// occurrence of string 's1' in string 's2', ignoring case. Returns
|
/// occurrence of string 's1' in string 's2', ignoring case. Returns
|
||||||
/// the offset of s2 in s1 or npos if s2 cannot be found.
|
/// the offset of s2 in s1 or npos if s2 cannot be found.
|
||||||
|
@ -195,6 +195,18 @@ void CppWriter::error(const std::string& msg) {
|
|||||||
report_fatal_error(msg);
|
report_fatal_error(msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline std::string ftostr(const APFloat& V) {
|
||||||
|
std::string Buf;
|
||||||
|
if (&V.getSemantics() == &APFloat::IEEEdouble) {
|
||||||
|
raw_string_ostream(Buf) << V.convertToDouble();
|
||||||
|
return Buf;
|
||||||
|
} else if (&V.getSemantics() == &APFloat::IEEEsingle) {
|
||||||
|
raw_string_ostream(Buf) << (double)V.convertToFloat();
|
||||||
|
return Buf;
|
||||||
|
}
|
||||||
|
return "<unknown format in ftostr>"; // error
|
||||||
|
}
|
||||||
|
|
||||||
// printCFP - Print a floating point constant .. very carefully :)
|
// printCFP - Print a floating point constant .. very carefully :)
|
||||||
// This makes sure that conversion to/from floating yields the same binary
|
// This makes sure that conversion to/from floating yields the same binary
|
||||||
// result so that we don't lose precision.
|
// result so that we don't lose precision.
|
||||||
|
@ -18,6 +18,7 @@
|
|||||||
#include "llvm/MC/MCExpr.h"
|
#include "llvm/MC/MCExpr.h"
|
||||||
#include "llvm/MC/MCInst.h"
|
#include "llvm/MC/MCInst.h"
|
||||||
#include "llvm/MC/MCSymbol.h"
|
#include "llvm/MC/MCSymbol.h"
|
||||||
|
#include "llvm/ADT/APFloat.h"
|
||||||
#include "llvm/ADT/StringExtras.h"
|
#include "llvm/ADT/StringExtras.h"
|
||||||
#include "llvm/Support/ErrorHandling.h"
|
#include "llvm/Support/ErrorHandling.h"
|
||||||
#include "llvm/Support/raw_ostream.h"
|
#include "llvm/Support/raw_ostream.h"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user