[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