forked from OSchip/llvm-project
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
f74a4cd3dd
commit
cbf108eda6
|
@ -15,12 +15,7 @@
|
|||
#define LLVM_ADT_STRINGEXTRAS_H
|
||||
|
||||
#include "llvm/Support/DataTypes.h"
|
||||
#include "llvm/ADT/APFloat.h"
|
||||
#include "llvm/ADT/DenseMapInfo.h"
|
||||
#include "llvm/ADT/StringRef.h"
|
||||
#include <cctype>
|
||||
#include <cstdio>
|
||||
#include <string>
|
||||
|
||||
namespace llvm {
|
||||
template<typename T> class SmallVectorImpl;
|
||||
|
@ -101,22 +96,6 @@ static inline std::string itostr(int64_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
|
||||
/// occurrence of string 's1' in string 's2', ignoring case. Returns
|
||||
/// 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);
|
||||
}
|
||||
|
||||
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 :)
|
||||
// This makes sure that conversion to/from floating yields the same binary
|
||||
// result so that we don't lose precision.
|
||||
|
|
|
@ -18,6 +18,7 @@
|
|||
#include "llvm/MC/MCExpr.h"
|
||||
#include "llvm/MC/MCInst.h"
|
||||
#include "llvm/MC/MCSymbol.h"
|
||||
#include "llvm/ADT/APFloat.h"
|
||||
#include "llvm/ADT/StringExtras.h"
|
||||
#include "llvm/Support/ErrorHandling.h"
|
||||
#include "llvm/Support/raw_ostream.h"
|
||||
|
|
Loading…
Reference in New Issue