Parameterize the constant-generating macros in stdint.h with new built-in
__INTn_C_SUFFIX__ macros that are defined for types with corresponding
constant suffixes (i.e. long and long long).

llvm-svn: 88914
diff --git a/clang/lib/Frontend/InitPreprocessor.cpp b/clang/lib/Frontend/InitPreprocessor.cpp
index 6968049..9648620 100644
--- a/clang/lib/Frontend/InitPreprocessor.cpp
+++ b/clang/lib/Frontend/InitPreprocessor.cpp
@@ -240,8 +240,16 @@
 static void DefineExactWidthIntType(TargetInfo::IntType Ty, 
                                const TargetInfo &TI, std::vector<char> &Buf) {
   char MacroBuf[60];
-  sprintf(MacroBuf, "__INT%d_TYPE__", TI.getTypeWidth(Ty));
+  int TypeWidth = TI.getTypeWidth(Ty);
+  sprintf(MacroBuf, "__INT%d_TYPE__", TypeWidth);
   DefineType(MacroBuf, Ty, Buf);
+
+
+  const char *ConstSuffix = TargetInfo::getTypeConstantSuffix(Ty);
+  if (strlen(ConstSuffix) > 0) {
+    sprintf(MacroBuf, "__INT%d_C_SUFFIX__=%s", TypeWidth, ConstSuffix);
+    DefineBuiltinMacro(Buf, MacroBuf);
+  }
 }
 
 static void InitializePredefinedMacros(const TargetInfo &TI,