aboutsummaryrefslogtreecommitdiff
path: root/lib/Basic/Targets.cpp
diff options
context:
space:
mode:
authorEli Friedman <eli.friedman@gmail.com>2008-11-02 02:43:55 +0000
committerEli Friedman <eli.friedman@gmail.com>2008-11-02 02:43:55 +0000
commitf509d73ecf2c996e257f1a4e23c1282396b0a847 (patch)
treec98f0531098d466785f1fd1fe271e6124e42e513 /lib/Basic/Targets.cpp
parentc979a9b066d998d73fb3a5ae293b7bbf78576e47 (diff)
More fallout from r58501: primary fix is some more corrections to make
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
Diffstat (limited to 'lib/Basic/Targets.cpp')
-rw-r--r--lib/Basic/Targets.cpp25
1 files changed, 18 insertions, 7 deletions
diff --git a/lib/Basic/Targets.cpp b/lib/Basic/Targets.cpp
index 456c1f8f35..71321f19cc 100644
--- a/lib/Basic/Targets.cpp
+++ b/lib/Basic/Targets.cpp
@@ -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; }