]> granicus.if.org Git - clang/commitdiff
do not store wchar/char16/char32/intmax width/alignment info
authorChris Lattner <sabre@nondot.org>
Thu, 12 Nov 2009 08:04:33 +0000 (08:04 +0000)
committerChris Lattner <sabre@nondot.org>
Thu, 12 Nov 2009 08:04:33 +0000 (08:04 +0000)
into TargetInfo, just derive this based on the underlying type.
This prevents them from getting out of synch, patch by Ken Dyck!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86976 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/Basic/TargetInfo.h
lib/Basic/TargetInfo.cpp
lib/Basic/Targets.cpp
lib/Frontend/InitPreprocessor.cpp
test/Preprocessor/init.c
test/Preprocessor/stdint.c

index f006ce9d90f918665227be09038ebc9c231dca56..f1c9cf193660121bc544ef539ac16f408dc8e63e 100644 (file)
@@ -44,16 +44,12 @@ protected:
   // values are specified by the TargetInfo constructor.
   bool TLSSupported;
   unsigned char PointerWidth, PointerAlign;
-  unsigned char WCharWidth, WCharAlign;
-  unsigned char Char16Width, Char16Align;
-  unsigned char Char32Width, Char32Align;
   unsigned char IntWidth, IntAlign;
   unsigned char FloatWidth, FloatAlign;
   unsigned char DoubleWidth, DoubleAlign;
   unsigned char LongDoubleWidth, LongDoubleAlign;
   unsigned char LongWidth, LongAlign;
   unsigned char LongLongWidth, LongLongAlign;
-  unsigned char IntMaxTWidth;
   const char *DescriptionString;
   const char *UserLabelPrefix;
   const llvm::fltSemantics *FloatFormat, *DoubleFormat, *LongDoubleFormat;
@@ -150,18 +146,18 @@ public:
 
   /// getWCharWidth/Align - Return the size of 'wchar_t' for this target, in
   /// bits.
-  unsigned getWCharWidth() const { return WCharWidth; }
-  unsigned getWCharAlign() const { return WCharAlign; }
+  unsigned getWCharWidth() const { return getTypeWidth(WCharType); }
+  unsigned getWCharAlign() const { return getTypeAlign(WCharType); }
 
   /// getChar16Width/Align - Return the size of 'char16_t' for this target, in
   /// bits.
-  unsigned getChar16Width() const { return Char16Width; }
-  unsigned getChar16Align() const { return Char16Align; }
+  unsigned getChar16Width() const { return getTypeWidth(Char16Type); }
+  unsigned getChar16Align() const { return getTypeAlign(Char16Type); }
 
   /// getChar32Width/Align - Return the size of 'char32_t' for this target, in
   /// bits.
-  unsigned getChar32Width() const { return Char32Width; }
-  unsigned getChar32Align() const { return Char32Align; }
+  unsigned getChar32Width() const { return getTypeWidth(Char32Type); }
+  unsigned getChar32Align() const { return getTypeAlign(Char32Type); }
 
   /// getFloatWidth/Align/Format - Return the size/align/format of 'float'.
   unsigned getFloatWidth() const { return FloatWidth; }
@@ -184,7 +180,7 @@ public:
   /// getIntMaxTWidth - Return the size of intmax_t and uintmax_t for this
   /// target, in bits.
   unsigned getIntMaxTWidth() const {
-    return IntMaxTWidth;
+    return getTypeWidth(IntMaxType);
   }
 
   /// getUserLabelPrefix - This returns the default value of the
index 1318130b8779e62d43a7087f3979601f70fa8650..b6c4df87f27256cea2acbd8a769ed2b61325ce61 100644 (file)
@@ -25,9 +25,6 @@ TargetInfo::TargetInfo(const std::string &T) : Triple(T) {
   // These should be overridden by concrete targets as needed.
   TLSSupported = true;
   PointerWidth = PointerAlign = 32;
-  WCharWidth = WCharAlign = 32;
-  Char16Width = Char16Align = 16;
-  Char32Width = Char32Align = 32;
   IntWidth = IntAlign = 32;
   LongWidth = LongAlign = 32;
   LongLongWidth = LongLongAlign = 64;
@@ -37,7 +34,6 @@ TargetInfo::TargetInfo(const std::string &T) : Triple(T) {
   DoubleAlign = 64;
   LongDoubleWidth = 64;
   LongDoubleAlign = 64;
-  IntMaxTWidth = 64;
   SizeType = UnsignedLong;
   PtrDiffType = SignedLong;
   IntMaxType = SignedLongLong;
@@ -147,7 +143,6 @@ bool TargetInfo::isTypeSigned(IntType T) const {
 void TargetInfo::setForcedLangOptions(LangOptions &Opts) {
   if (Opts.ShortWChar) {
     WCharType = UnsignedShort;
-    WCharWidth = WCharAlign = 16;
   }
 }
 
index 4ee377e27557427a73760683f72b4aa37dfd2813..d1888df8c3cf9eb7d1720b21a828d116479ac81c 100644 (file)
@@ -962,7 +962,6 @@ public:
     : X86_32TargetInfo(triple) {
     TLSSupported = false;
     WCharType = UnsignedShort;
-    WCharWidth = WCharAlign = 16;
     DoubleAlign = LongLongAlign = 64;
     DescriptionString = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-"
                         "i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-"
@@ -1033,7 +1032,6 @@ public:
     : X86_32TargetInfo(triple) {
     TLSSupported = false;
     WCharType = UnsignedShort;
-    WCharWidth = WCharAlign = 16;
     DoubleAlign = LongLongAlign = 64;
     DescriptionString = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-"
                         "i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-"
@@ -1092,7 +1090,6 @@ public:
     : X86_64TargetInfo(triple) {
     TLSSupported = false;
     WCharType = UnsignedShort;
-    WCharWidth = WCharAlign = 16;
     LongWidth = LongAlign = 32;
     DoubleAlign = LongLongAlign = 64;
   }
@@ -1507,7 +1504,6 @@ namespace {
       TLSSupported = false;
       IntWidth = 16;
       LongWidth = LongLongWidth = 32;
-      IntMaxTWidth = 32;
       PointerWidth = 16;
       IntAlign = 8;
       LongAlign = LongLongAlign = 8;
@@ -1575,7 +1571,6 @@ namespace {
       TLSSupported = false;
       IntWidth = 16;
       LongWidth = LongLongWidth = 32;
-      IntMaxTWidth = 32;
       PointerWidth = 16;
       IntAlign = 8;
       LongAlign = LongLongAlign = 8;
@@ -1789,7 +1784,6 @@ namespace {
       TLSSupported = false;
       IntWidth = 32;
       LongWidth = LongLongWidth = 32;
-      IntMaxTWidth = 32;
       PointerWidth = 32;
       IntAlign = 32;
       LongAlign = LongLongAlign = 32;
index 462e065e8c14154bc85116467ccf4c170d0c2ac2..f6e60589089e0556a1b95a6a2a37679fd5d525d6 100644 (file)
@@ -364,11 +364,7 @@ static void InitializePredefinedMacros(const TargetInfo &TI,
   DefineTypeSize("__INT_MAX__", TargetInfo::SignedInt, TI, Buf);
   DefineTypeSize("__LONG_MAX__", TargetInfo::SignedLong, TI, Buf);
   DefineTypeSize("__LONG_LONG_MAX__", TargetInfo::SignedLongLong, TI, Buf);
-  // FIXME: TI.getWCharWidth() and TI.getTypeWidth(TI.getWCharType()) return
-  // different values on PIC16 and MSP430. TargetInfo needs to be corrected 
-  // and the following line substituted for the one below it.
-  // DefineTypeSize("__WCHAR_MAX__", TI.getWCharType(), TI, Buf);
-  DefineTypeSize("__WCHAR_MAX__", TI.getWCharWidth(), "", true, Buf);
+  DefineTypeSize("__WCHAR_MAX__", TI.getWCharType(), TI, Buf);
   DefineTypeSize("__INTMAX_MAX__", TI.getIntMaxType(), TI, Buf);
 
   DefineType("__INTMAX_TYPE__", TI.getIntMaxType(), Buf);
index 6f8f61b6358f9fcedc3fce7ba6eceb25f20be019..95f978bec3ba2541a7583c95b79902cef96acb04 100644 (file)
 // MSP430:#define __SIZE_TYPE__ unsigned int
 // MSP430:#define __UINTMAX_TYPE__ long unsigned int
 // MSP430:#define __USER_LABEL_PREFIX__ _
-// MSP430:#define __WCHAR_MAX__ 2147483647
+// MSP430:#define __WCHAR_MAX__ 32767
 // MSP430:#define __WCHAR_TYPE__ int
 // MSP430:#define __WINT_TYPE__ int
 // MSP430:#define __clang__ 1
 // PIC16:#define __SIZE_TYPE__ unsigned int
 // PIC16:#define __UINTMAX_TYPE__ long unsigned int
 // PIC16:#define __USER_LABEL_PREFIX__ _
-// PIC16:#define __WCHAR_MAX__ 2147483647
+// PIC16:#define __WCHAR_MAX__ 32767
 // PIC16:#define __WCHAR_TYPE__ int
 // PIC16:#define __WINT_TYPE__ int
 // PIC16:#define __clang__ 1
index c732bf51deeadbebcb5a51b574bfeedb7cdb476f..a1c82f4c2038ee3e1de02264643964efe6ea47e0 100644 (file)
 // MSP430:WINT_MIN_ (-2147483647 -1)
 // MSP430:WINT_MAX_ 2147483647
 //
-// MSP430:WCHAR_MAX_ 2147483647
-// MSP430:WCHAR_MIN_ (-2147483647 -1)
+// MSP430:WCHAR_MAX_ 32767
+// MSP430:WCHAR_MIN_ (-32767 -1)
 //
 // MSP430:INT8_C_(0) (0)
 // MSP430:UINT8_C_(0) (0U)
 // PIC16:WINT_MIN_ (-2147483647 -1)
 // PIC16:WINT_MAX_ 2147483647
 //
-// PIC16:WCHAR_MAX_ 2147483647
-// PIC16:WCHAR_MIN_ (-2147483647 -1)
+// PIC16:WCHAR_MAX_ 32767
+// PIC16:WCHAR_MIN_ (-32767 -1)
 //
 // PIC16:INT8_C_(0) (0)
 // PIC16:UINT8_C_(0) (0U)