summaryrefslogtreecommitdiffstats
path: root/lib/Basic
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Basic')
-rw-r--r--lib/Basic/TargetInfo.cpp1
-rw-r--r--lib/Basic/Targets.cpp49
-rw-r--r--lib/Basic/TokenKinds.cpp55
3 files changed, 52 insertions, 53 deletions
diff --git a/lib/Basic/TargetInfo.cpp b/lib/Basic/TargetInfo.cpp
index b6c4df8..a1f97f4 100644
--- a/lib/Basic/TargetInfo.cpp
+++ b/lib/Basic/TargetInfo.cpp
@@ -44,6 +44,7 @@ TargetInfo::TargetInfo(const std::string &T) : Triple(T) {
Char16Type = UnsignedShort;
Char32Type = UnsignedInt;
Int64Type = SignedLongLong;
+ SigAtomicType = SignedInt;
FloatFormat = &llvm::APFloat::IEEEsingle;
DoubleFormat = &llvm::APFloat::IEEEdouble;
LongDoubleFormat = &llvm::APFloat::IEEEdouble;
diff --git a/lib/Basic/Targets.cpp b/lib/Basic/Targets.cpp
index 07c2bb9..e5a4c43 100644
--- a/lib/Basic/Targets.cpp
+++ b/lib/Basic/Targets.cpp
@@ -313,6 +313,42 @@ public:
}
};
+// PS3 PPU Target
+template<typename Target>
+class PS3PPUTargetInfo : public OSTargetInfo<Target> {
+protected:
+ virtual void getOSDefines(const LangOptions &Opts, const llvm::Triple &Triple,
+ std::vector<char> &Defs) const {
+ // PS3 PPU defines.
+ Define(Defs, "__PPU__", "1");
+ Define(Defs, "__CELLOS_LV2__", "1");
+ Define(Defs, "__ELF__", "1");
+ }
+public:
+ PS3PPUTargetInfo(const std::string& triple)
+ : OSTargetInfo<Target>(triple) {
+ this->UserLabelPrefix = "";
+ }
+};
+
+// FIXME: Need a real SPU target.
+// PS3 SPU Target
+template<typename Target>
+class PS3SPUTargetInfo : public OSTargetInfo<Target> {
+protected:
+ virtual void getOSDefines(const LangOptions &Opts, const llvm::Triple &Triple,
+ std::vector<char> &Defs) const {
+ // PS3 PPU defines.
+ Define(Defs, "__SPU__", "1");
+ Define(Defs, "__ELF__", "1");
+ }
+public:
+ PS3SPUTargetInfo(const std::string& triple)
+ : OSTargetInfo<Target>(triple) {
+ this->UserLabelPrefix = "";
+ }
+};
+
// AuroraUX target
template<typename Target>
class AuroraUXTargetInfo : public OSTargetInfo<Target> {
@@ -445,6 +481,11 @@ void PPCTargetInfo::getTargetDefines(const LangOptions &Opts,
// FIXME: Should be controlled by command line option.
Define(Defs, "__LONG_DOUBLE_128__");
+
+ if (Opts.AltiVec) {
+ Define(Defs, "__VEC__", "10206");
+ Define(Defs, "__ALTIVEC__", "1");
+ }
}
@@ -1492,6 +1533,7 @@ namespace {
UIntMaxType = UnsignedLong;
IntPtrType = SignedShort;
PtrDiffType = SignedInt;
+ SigAtomicType = SignedLong;
FloatWidth = 32;
FloatAlign = 32;
DoubleWidth = 32;
@@ -1559,6 +1601,7 @@ namespace {
UIntMaxType = UnsignedLong;
IntPtrType = SignedShort;
PtrDiffType = SignedInt;
+ SigAtomicType = SignedLong;
DescriptionString = "e-p:16:8:8-i8:8:8-i16:8:8-i32:8:8-n8:16";
}
virtual void getTargetDefines(const LangOptions &Opts,
@@ -1990,6 +2033,8 @@ static TargetInfo *AllocateTarget(const std::string &T) {
case llvm::Triple::ppc64:
if (os == llvm::Triple::Darwin)
return new DarwinTargetInfo<PPC64TargetInfo>(T);
+ else if (os == llvm::Triple::Lv2)
+ return new PS3PPUTargetInfo<PPC64TargetInfo>(T);
return new PPC64TargetInfo(T);
case llvm::Triple::sparc:
@@ -1999,6 +2044,10 @@ static TargetInfo *AllocateTarget(const std::string &T) {
return new SolarisSparcV8TargetInfo(T);
return new SparcV8TargetInfo(T);
+ // FIXME: Need a real SPU target.
+ case llvm::Triple::cellspu:
+ return new PS3SPUTargetInfo<PPC64TargetInfo>(T);
+
case llvm::Triple::systemz:
return new SystemZTargetInfo(T);
diff --git a/lib/Basic/TokenKinds.cpp b/lib/Basic/TokenKinds.cpp
index 4afeaf0..8cdc1e3 100644
--- a/lib/Basic/TokenKinds.cpp
+++ b/lib/Basic/TokenKinds.cpp
@@ -30,59 +30,8 @@ const char *tok::getTokenName(enum TokenKind Kind) {
const char *tok::getTokenSimpleSpelling(enum TokenKind Kind) {
switch (Kind) {
- case tok::l_square: return "[";
- case tok::r_square: return "]";
- case tok::l_paren: return "(";
- case tok::r_paren: return ")";
- case tok::l_brace: return "{";
- case tok::r_brace: return "}";
- case tok::period: return ".";
- case tok::ellipsis: return "...";
- case tok::amp: return "&";
- case tok::ampamp: return "&&";
- case tok::ampequal: return "&=";
- case tok::star: return "*";
- case tok::starequal: return "*=";
- case tok::plus: return "+";
- case tok::plusplus: return "++";
- case tok::plusequal: return "+=";
- case tok::minus: return "-";
- case tok::arrow: return "->";
- case tok::minusminus: return "--";
- case tok::minusequal: return "-=";
- case tok::tilde: return "~";
- case tok::exclaim: return "!";
- case tok::exclaimequal: return "!=";
- case tok::slash: return "/";
- case tok::slashequal: return "/=";
- case tok::percent: return "%";
- case tok::percentequal: return "%=";
- case tok::less: return "<";
- case tok::lessless: return "<<";
- case tok::lessequal: return "<=";
- case tok::lesslessequal: return "<<=";
- case tok::greater: return ">";
- case tok::greatergreater: return ">>";
- case tok::greaterequal: return ">=";
- case tok::greatergreaterequal: return ">>=";
- case tok::caret: return "^";
- case tok::caretequal: return "^=";
- case tok::pipe: return "|";
- case tok::pipepipe: return "||";
- case tok::pipeequal: return "|=";
- case tok::question: return "?";
- case tok::colon: return ":";
- case tok::semi: return ";";
- case tok::equal: return "=";
- case tok::equalequal: return "==";
- case tok::comma: return ",";
- case tok::hash: return "#";
- case tok::hashhash: return "##";
- case tok::hashat: return "#@";
- case tok::periodstar: return ".*";
- case tok::arrowstar: return "->*";
- case tok::coloncolon: return "::";
- case tok::at: return "@";
+#define PUNCTUATOR(X,Y) case X: return Y;
+#include "clang/Basic/TokenKinds.def"
default: break;
}
OpenPOWER on IntegriCloud