diff --git a/Lex/LiteralSupport.cpp b/Lex/LiteralSupport.cpp
index 8276552..0428256 100644
--- a/Lex/LiteralSupport.cpp
+++ b/Lex/LiteralSupport.cpp
@@ -202,10 +202,10 @@
   s = DigitsBegin = begin;
   saw_exponent = false;
   saw_period = false;
-  saw_float_suffix = false;
   isLong = false;
   isUnsigned = false;
   isLongLong = false;
+  isFloat = false;
   isImaginary = false;
   hadError = false;
   
@@ -326,8 +326,8 @@
     case 'f':      // FP Suffix for "float"
     case 'F':
       if (!isFPConstant) break;  // Error for integer constant.
-      if (saw_float_suffix || isLong) break; // FF, LF invalid.
-      saw_float_suffix = true;
+      if (isFloat || isLong) break; // FF, LF invalid.
+      isFloat = true;
       continue;  // Success.
     case 'u':
     case 'U':
@@ -338,7 +338,7 @@
     case 'l':
     case 'L':
       if (isLong || isLongLong) break;  // Cannot be repeated.
-      if (saw_float_suffix) break;      // LF invalid.
+      if (isFloat) break;               // LF invalid.
       
       // Check for long long.  The L's need to be adjacent and the same case.
       if (s+1 != ThisTokEnd && s[1] == s[0]) {
diff --git a/Lex/PPExpressions.cpp b/Lex/PPExpressions.cpp
index f43243e..590c0ee 100644
--- a/Lex/PPExpressions.cpp
+++ b/Lex/PPExpressions.cpp
@@ -161,7 +161,7 @@
     if (Literal.hadError)
       return true; // a diagnostic was already reported.
     
-    if (Literal.isFloatingLiteral()) {
+    if (Literal.isFloatingLiteral() || Literal.isImaginary) {
       PP.Diag(PeekTok, diag::err_pp_illegal_floating_literal);
       return true;
     }
diff --git a/Sema/SemaExpr.cpp b/Sema/SemaExpr.cpp
index 9539a91..1c53955 100644
--- a/Sema/SemaExpr.cpp
+++ b/Sema/SemaExpr.cpp
@@ -221,8 +221,8 @@
     return new IntegerLiteral(ResultVal, t, Tok.getLocation());
   } else if (Literal.isFloatingLiteral()) {
     // FIXME: handle float values > 32 (including compute the real type...).
-    return new FloatingLiteral(Literal.GetFloatValue(), Context.FloatTy, 
-                               Tok.getLocation());
+    QualType Ty = Literal.isFloat ? Context.FloatTy : Context.DoubleTy;
+    return new FloatingLiteral(Literal.GetFloatValue(), Ty, Tok.getLocation());
   }
   return ExprResult(true);
 }
diff --git a/include/clang/Lex/LiteralSupport.h b/include/clang/Lex/LiteralSupport.h
index c667405..9c4c4cd 100644
--- a/include/clang/Lex/LiteralSupport.h
+++ b/include/clang/Lex/LiteralSupport.h
@@ -44,7 +44,6 @@
   unsigned radix;
   
   bool saw_exponent, saw_period;
-  bool saw_float_suffix;    // 1.0f
   
 public:
   NumericLiteralParser(const char *begin, const char *end,
@@ -53,6 +52,7 @@
   bool isUnsigned;
   bool isLong;        // This is *not* set for long long.
   bool isLongLong;
+  bool isFloat;       // 1.0f
   bool isImaginary;   // 1.0i
   
   bool isIntegerLiteral() const { 
