[cfe-commits] r135455 - in /cfe/trunk/lib: Frontend/InitPreprocessor.cpp Headers/limits.h

Sean Hunt scshunt at csclub.uwaterloo.ca
Mon Jul 18 17:50:58 PDT 2011


Author: coppro
Date: Mon Jul 18 19:50:57 2011
New Revision: 135455

URL: http://llvm.org/viewvc/llvm-project?rev=135455&view=rev
Log:
Implement a __WCHAR_UNSIGNED__ macro and use it to include WCHAR_MIN and
WCHAR_MAX in limits.h, thus solving the problem where the system header
thinks it knows better.

Modified:
    cfe/trunk/lib/Frontend/InitPreprocessor.cpp
    cfe/trunk/lib/Headers/limits.h

Modified: cfe/trunk/lib/Frontend/InitPreprocessor.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Frontend/InitPreprocessor.cpp?rev=135455&r1=135454&r2=135455&view=diff
==============================================================================
--- cfe/trunk/lib/Frontend/InitPreprocessor.cpp (original)
+++ cfe/trunk/lib/Frontend/InitPreprocessor.cpp Mon Jul 18 19:50:57 2011
@@ -554,6 +554,9 @@
   if (!TargetInfo::isTypeSigned(TI.getWIntType()))
     Builder.defineMacro("__WINT_UNSIGNED__");
 
+  if (!TargetInfo::isTypeSigned(TI.getWCharType()))
+    Builder.defineMacro("__WCHAR_UNSIGNED__");
+
   // Define exact-width integer types for stdint.h
   Builder.defineMacro("__INT" + llvm::Twine(TI.getCharWidth()) + "_TYPE__",
                       "char");

Modified: cfe/trunk/lib/Headers/limits.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Headers/limits.h?rev=135455&r1=135454&r2=135455&view=diff
==============================================================================
--- cfe/trunk/lib/Headers/limits.h (original)
+++ cfe/trunk/lib/Headers/limits.h Mon Jul 18 19:50:57 2011
@@ -52,6 +52,8 @@
 #undef  LONG_MIN
 #undef  LONG_MAX
 #undef  ULONG_MAX
+#undef  WCHAR_MIN
+#undef  WCHAR_MAX
 
 #undef  CHAR_BIT
 #undef  CHAR_MIN
@@ -62,6 +64,7 @@
 #define SHRT_MAX  __SHRT_MAX__
 #define INT_MAX   __INT_MAX__
 #define LONG_MAX  __LONG_MAX__
+#define WCHAR_MAX __WCHAR_MAX__
 
 #define SCHAR_MIN (-__SCHAR_MAX__-1)
 #define SHRT_MIN  (-__SHRT_MAX__ -1)
@@ -87,6 +90,17 @@
 #define CHAR_MAX __SCHAR_MAX__
 #endif
 
+/* C++ or C99: Added wchar_t */
+#if defined(__cplusplus) || __STDC_VERSION__ >= 199901
+
+#ifdef __WCHAR_UNSIGNED__
+#define WCHAR_MIN 0
+#else
+#define WCHAR_MIN (-__WCHAR_MAX__-1)
+#endif
+
+#endif
+
 /* C99 5.2.4.2.1: Added long long. */
 #if __STDC_VERSION__ >= 199901
 





More information about the cfe-commits mailing list