diff --git a/Basic/TargetInfo.cpp b/Basic/TargetInfo.cpp
index 5364aff..8d4488a 100644
--- a/Basic/TargetInfo.cpp
+++ b/Basic/TargetInfo.cpp
@@ -18,26 +18,20 @@
 #include "llvm/ADT/STLExtras.h"
 using namespace clang;
 
+// 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() {}
 
 //===----------------------------------------------------------------------===//
-// 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;
-}
-
-
-//===----------------------------------------------------------------------===//
 
 
 static void removeGCCRegisterPrefix(const char *&Name) {
diff --git a/include/clang/Basic/TargetInfo.h b/include/clang/Basic/TargetInfo.h
index 2d2aca5..017f6d6 100644
--- a/include/clang/Basic/TargetInfo.h
+++ b/include/clang/Basic/TargetInfo.h
@@ -32,16 +32,14 @@
 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 @@
   /// 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
