]> granicus.if.org Git - clang/commitdiff
More fallout from r58501: primary fix is some more corrections to make
authorEli Friedman <eli.friedman@gmail.com>
Sun, 2 Nov 2008 02:43:55 +0000 (02:43 +0000)
committerEli Friedman <eli.friedman@gmail.com>
Sun, 2 Nov 2008 02:43:55 +0000 (02:43 +0000)
the types for size_t and ptrdiff_t more accurate.  I think all of these
are correct, but please compare the defines for __PTRDIFF_TYPE__ and
__SIZE_TYPE__ to gcc to double-check; this particularly applies to
those on BSD variants, since I'm not sure what they do here; I assume
here that they're the same as on Linux.

Fixes wchar_t to be "int", not "unsigned int" (which I think is
correct on everything but Windows).

Fixes ptrdiff_t to be "int" rather than "short" on PIC16; "short" is an
somewhat strange choice because it normally gets promoted, and it's not
consistent with the choice for size_t.

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

lib/Basic/TargetInfo.cpp
lib/Basic/Targets.cpp

index 522a09dbb13f28dc9515bbd62cc96430b41a487d..44150821a8e10980801859567d030a676da6d982 100644 (file)
@@ -35,10 +35,10 @@ TargetInfo::TargetInfo(const std::string &T) : Triple(T) {
   LongDoubleWidth = 64;
   LongDoubleAlign = 64;
   SizeType = UnsignedLong;
+  PtrDiffType = SignedLong;
   IntMaxType = SignedLongLong;
   UIntMaxType = UnsignedLongLong;
-  PtrDiffType = SignedLongLong;
-  WCharType = UnsignedInt;
+  WCharType = SignedInt;
   FloatFormat = &llvm::APFloat::IEEEsingle;
   DoubleFormat = &llvm::APFloat::IEEEdouble;
   LongDoubleFormat = &llvm::APFloat::IEEEdouble;
index 456c1f8f35308534341deecd32fa9595f80f6ddd..71321f19cc8dc376619fdf1d293e5a836b8bc69c 100644 (file)
@@ -534,7 +534,10 @@ namespace {
 // x86-32 FreeBSD target
 class FreeBSDX86_32TargetInfo : public X86_32TargetInfo {
 public:
-  FreeBSDX86_32TargetInfo(const std::string& triple) : X86_32TargetInfo(triple) {
+  FreeBSDX86_32TargetInfo(const std::string& triple) :
+      X86_32TargetInfo(triple) {
+    SizeType = UnsignedInt;
+    PtrDiffType = SignedInt;
   }
   virtual void getTargetDefines(std::vector<char> &Defines) const {
     X86_32TargetInfo::getTargetDefines(Defines);
@@ -547,7 +550,10 @@ namespace {
 // x86-32 DragonFly target
 class DragonFlyX86_32TargetInfo : public X86_32TargetInfo {
 public:
-  DragonFlyX86_32TargetInfo(const std::string& triple) : X86_32TargetInfo(triple) {
+  DragonFlyX86_32TargetInfo(const std::string& triple) :
+      X86_32TargetInfo(triple) {
+    SizeType = UnsignedInt;
+    PtrDiffType = SignedInt;
   }
   virtual void getTargetDefines(std::vector<char> &Defines) const {
     X86_32TargetInfo::getTargetDefines(Defines);
@@ -562,6 +568,8 @@ class LinuxX86_32TargetInfo : public X86_32TargetInfo {
 public:
   LinuxX86_32TargetInfo(const std::string& triple) : X86_32TargetInfo(triple) {
     UserLabelPrefix = "";
+    SizeType = UnsignedInt;
+    PtrDiffType = SignedInt;
   }
   virtual void getTargetDefines(std::vector<char> &Defines) const {
     X86_32TargetInfo::getTargetDefines(Defines);
@@ -579,6 +587,8 @@ public:
     // FIXME: Fix wchar_t.
     // FIXME: We should probably enable -fms-extensions by default for
     // this target.
+    SizeType = UnsignedInt;
+    PtrDiffType = SignedInt;
   }
   virtual void getTargetDefines(std::vector<char> &Defines) const {
     X86_32TargetInfo::getTargetDefines(Defines);
@@ -626,8 +636,7 @@ namespace {
 // x86-64 FreeBSD target
 class FreeBSDX86_64TargetInfo : public X86_64TargetInfo {
 public:
-  FreeBSDX86_64TargetInfo(const std::string& triple) : X86_64TargetInfo(triple) {
-  }
+  FreeBSDX86_64TargetInfo(const std::string& triple) : X86_64TargetInfo(triple) {}
   virtual void getTargetDefines(std::vector<char> &Defines) const {
     X86_64TargetInfo::getTargetDefines(Defines);
     getFreeBSDDefines(Defines, 1, getTargetTriple());
@@ -788,7 +797,10 @@ namespace {
 class SolarisSparcV8TargetInfo : public SparcV8TargetInfo {
 public:
   SolarisSparcV8TargetInfo(const std::string& triple) :
-    SparcV8TargetInfo(triple) {}
+      SparcV8TargetInfo(triple) {
+    SizeType = UnsignedInt;
+    PtrDiffType = SignedInt;
+  }
 
   virtual void getTargetDefines(std::vector<char> &Defines) const {
     SparcV8TargetInfo::getTargetDefines(Defines);
@@ -810,8 +822,7 @@ namespace {
       SizeType = UnsignedInt;
       IntMaxType = SignedLong;
       UIntMaxType = UnsignedLong;
-      PtrDiffType = SignedShort;
-      WCharType = UnsignedInt;
+      PtrDiffType = SignedInt;
       DescriptionString = "e-p:16:8:8-i8:8:8-i16:8:8-i32:8:8";
     }
     virtual uint64_t getPointerWidthV(unsigned AddrSpace) const { return 16; }