diff options
author | Alex Rosenberg <alexr@leftfield.org> | 2015-01-27 14:47:44 +0000 |
---|---|---|
committer | Alex Rosenberg <alexr@leftfield.org> | 2015-01-27 14:47:44 +0000 |
commit | 12207fab7851ed15c2449e9ec2b3dce19a3008e6 (patch) | |
tree | 163beac76e9de61b2817c06631a6e78bc1652911 /clang/lib/Basic/Targets.cpp | |
parent | 8441bb239fa5ac9fc8bcb42d2eb09720e0739d64 (diff) | |
download | bcm5719-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.cpp | 29 |
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); } |