summaryrefslogtreecommitdiffstats
path: root/clang/lib/Basic/Targets.cpp
diff options
context:
space:
mode:
authorAlex Rosenberg <alexr@leftfield.org>2015-01-27 14:47:44 +0000
committerAlex Rosenberg <alexr@leftfield.org>2015-01-27 14:47:44 +0000
commit12207fab7851ed15c2449e9ec2b3dce19a3008e6 (patch)
tree163beac76e9de61b2817c06631a6e78bc1652911 /clang/lib/Basic/Targets.cpp
parent8441bb239fa5ac9fc8bcb42d2eb09720e0739d64 (diff)
downloadbcm5719-llvm-12207fab7851ed15c2449e9ec2b3dce19a3008e6.tar.gz
bcm5719-llvm-12207fab7851ed15c2449e9ec2b3dce19a3008e6.zip
Begin to teach clang about the PS4.
llvm-svn: 227194
Diffstat (limited to 'clang/lib/Basic/Targets.cpp')
-rw-r--r--clang/lib/Basic/Targets.cpp29
1 files changed, 29 insertions, 0 deletions
diff --git a/clang/lib/Basic/Targets.cpp b/clang/lib/Basic/Targets.cpp
index c6c890d5d9f..2030e38c043 100644
--- a/clang/lib/Basic/Targets.cpp
+++ b/clang/lib/Basic/Targets.cpp
@@ -525,6 +525,33 @@ public:
}
};
+template <typename Target>
+class PS4OSTargetInfo : public OSTargetInfo<Target> {
+protected:
+ void getOSDefines(const LangOptions &Opts, const llvm::Triple &Triple,
+ MacroBuilder &Builder) const override {
+ Builder.defineMacro("__FreeBSD__", "9");
+ Builder.defineMacro("__FreeBSD_cc_version", "900001");
+ Builder.defineMacro("__KPRINTF_ATTRIBUTE__");
+ DefineStd(Builder, "unix", Opts);
+ Builder.defineMacro("__ELF__");
+ Builder.defineMacro("__PS4__");
+ }
+public:
+ PS4OSTargetInfo(const llvm::Triple &Triple) : OSTargetInfo<Target>(Triple) {
+ this->WCharType = this->UnsignedShort;
+
+ this->UserLabelPrefix = "";
+
+ switch (Triple.getArch()) {
+ default:
+ case llvm::Triple::x86_64:
+ this->MCountName = ".mcount";
+ break;
+ }
+ }
+};
+
// Solaris target
template<typename Target>
class SolarisTargetInfo : public OSTargetInfo<Target> {
@@ -6813,6 +6840,8 @@ static TargetInfo *AllocateTarget(const llvm::Triple &Triple) {
}
case llvm::Triple::NaCl:
return new NaClTargetInfo<X86_64TargetInfo>(Triple);
+ case llvm::Triple::PS4:
+ return new PS4OSTargetInfo<X86_64TargetInfo>(Triple);
default:
return new X86_64TargetInfo(Triple);
}
OpenPOWER on IntegriCloud