diff options
| -rw-r--r-- | clang/Basic/TargetInfo.cpp | 26 | ||||
| -rw-r--r-- | clang/include/clang/Basic/TargetInfo.h | 20 |
2 files changed, 20 insertions, 26 deletions
diff --git a/clang/Basic/TargetInfo.cpp b/clang/Basic/TargetInfo.cpp index 5364affe589..8d4488a7777 100644 --- a/clang/Basic/TargetInfo.cpp +++ b/clang/Basic/TargetInfo.cpp @@ -18,24 +18,18 @@ #include "llvm/ADT/STLExtras.h" using namespace clang; -// Out of line virtual dtor for TargetInfo. -TargetInfo::~TargetInfo() {} - -//===----------------------------------------------------------------------===// -// FIXME: These are temporary hacks. - -const llvm::fltSemantics *TargetInfo::getFloatFormat() const { - return &llvm::APFloat::IEEEsingle; -} -const llvm::fltSemantics *TargetInfo::getDoubleFormat() const { - return &llvm::APFloat::IEEEdouble; -} -const llvm::fltSemantics *TargetInfo::getLongDoubleFormat() const { - //Size = 80; Align = 32; // FIXME: implement correctly. - //Format = &llvm::APFloat::x87DoubleExtended; - return &llvm::APFloat::IEEEdouble; +// TargetInfo Constructor. +TargetInfo::TargetInfo(const std::string &T) : Triple(T) { + // Set defaults. These should be overridden by concrete targets as needed. + CharIsSigned = true; + WCharWidth = WCharAlign = 32; + FloatFormat = &llvm::APFloat::IEEEsingle; + DoubleFormat = &llvm::APFloat::IEEEdouble; + LongDoubleFormat = &llvm::APFloat::IEEEdouble; } +// Out of line virtual dtor for TargetInfo. +TargetInfo::~TargetInfo() {} //===----------------------------------------------------------------------===// diff --git a/clang/include/clang/Basic/TargetInfo.h b/clang/include/clang/Basic/TargetInfo.h index 2d2aca5698b..017f6d6f292 100644 --- a/clang/include/clang/Basic/TargetInfo.h +++ b/clang/include/clang/Basic/TargetInfo.h @@ -32,16 +32,14 @@ namespace Builtin { struct Info; } class TargetInfo { std::string Triple; protected: - /// These are all caches for target values. + // Target values set by the ctor of the actual target implementation. Default + // values are specified by the TargetInfo constructor. bool CharIsSigned; unsigned WCharWidth, WCharAlign; + const llvm::fltSemantics *FloatFormat, *DoubleFormat, *LongDoubleFormat; - // TargetInfo Constructor. - TargetInfo(const std::string &T) : Triple(T) { - // Set defaults. These should be overridden by concrete targets as needed. - CharIsSigned = true; - WCharWidth = WCharAlign = 32; - } + // TargetInfo Constructor. Default initializes all fields. + TargetInfo(const std::string &T); public: /// CreateTargetInfo - Return the target info object for the specified target @@ -106,18 +104,20 @@ public: /// getFloatWidth/Align/Format - Return the size/align/format of 'float'. unsigned getFloatWidth() const { return 32; } // FIXME unsigned getFloatAlign() const { return 32; } // FIXME - const llvm::fltSemantics *getFloatFormat() const; + const llvm::fltSemantics *getFloatFormat() const { return FloatFormat; } /// getDoubleWidth/Align/Format - Return the size/align/format of 'double'. unsigned getDoubleWidth() const { return 64; } // FIXME unsigned getDoubleAlign() const { return 32; } // FIXME - const llvm::fltSemantics *getDoubleFormat() const; + const llvm::fltSemantics *getDoubleFormat() const { return DoubleFormat; } /// getLongDoubleWidth/Align/Format - Return the size/align/format of 'long /// double'. unsigned getLongDoubleWidth() const { return 64; } // FIXME unsigned getLongDoubleAlign() const { return 64; } // FIXME - const llvm::fltSemantics *getLongDoubleFormat() const; + const llvm::fltSemantics *getLongDoubleFormat() const { + return LongDoubleFormat; + } /// getIntMaxTWidth - Return the size of intmax_t and uintmax_t for this |

