Add a fixit for \U1234 -> \u1234.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173371 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Lex/Lexer.cpp b/lib/Lex/Lexer.cpp
index 2a57e6f..a4d6a2e 100644
--- a/lib/Lex/Lexer.cpp
+++ b/lib/Lex/Lexer.cpp
@@ -2725,8 +2725,16 @@
           Diag(BufferPtr, diag::warn_ucn_escape_no_digits)
             << StringRef(KindLoc, 1);
         } else {
-          // FIXME: if i == 4 and NumHexDigits == 8, suggest a fixit to \u.
           Diag(BufferPtr, diag::warn_ucn_escape_incomplete);
+
+          // If the user wrote \U1234, suggest a fixit to \u.
+          if (i == 4 && NumHexDigits == 8) {
+            CharSourceRange URange =
+              CharSourceRange::getCharRange(getSourceLocation(KindLoc),
+                                            getSourceLocation(KindLoc + 1));
+            Diag(KindLoc, diag::note_ucn_four_not_eight)
+              << FixItHint::CreateReplacement(URange, "u");
+          }
         }
       }