diff options
author | Ed Schouten <ed@nuxi.nl> | 2015-03-11 08:42:46 +0000 |
---|---|---|
committer | Ed Schouten <ed@nuxi.nl> | 2015-03-11 08:42:46 +0000 |
commit | f33c607c0abce65d057fed6eaf9439e2506f1464 (patch) | |
tree | b8fa1612729ba867bf73d42273f803f7488c33ae /clang/lib/Basic/Targets.cpp | |
parent | f19da3c33acf0cfa7aac6df539e59a125e9005b0 (diff) | |
download | bcm5719-llvm-f33c607c0abce65d057fed6eaf9439e2506f1464.tar.gz bcm5719-llvm-f33c607c0abce65d057fed6eaf9439e2506f1464.zip |
Add target information for CloudABI on x86-64.
CloudABI can be identified by the __CloudABI__ preprocessor definition. The
system uses ELF executables.
CloudABI uses Unicode 7.0.0 for the encoding of wchar_t. As Unicode 7.0.0 is
synchronized with ISO/IEC 10646:2012 (released on 2012-06-01),
__STDC_ISO_10646__ is defined as 201206L.
llvm-svn: 231912
Diffstat (limited to 'clang/lib/Basic/Targets.cpp')
-rw-r--r-- | clang/lib/Basic/Targets.cpp | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/clang/lib/Basic/Targets.cpp b/clang/lib/Basic/Targets.cpp index 56b884d4ae6..15c35490ec0 100644 --- a/clang/lib/Basic/Targets.cpp +++ b/clang/lib/Basic/Targets.cpp @@ -183,6 +183,28 @@ static void getDarwinDefines(MacroBuilder &Builder, const LangOptions &Opts, PlatformMinVersion = VersionTuple(Maj, Min, Rev); } +// CloudABI Target +template <typename Target> +class CloudABITargetInfo : public OSTargetInfo<Target> { +protected: + void getOSDefines(const LangOptions &Opts, const llvm::Triple &Triple, + MacroBuilder &Builder) const override { + Builder.defineMacro("__CloudABI__"); + Builder.defineMacro("__ELF__"); + + // CloudABI uses ISO/IEC 10646:2012 for wchar_t, char16_t and char32_t. + Builder.defineMacro("__STDC_ISO_10646__", "201206L"); + Builder.defineMacro("__STDC_UTF_16__"); + Builder.defineMacro("__STDC_UTF_32__"); + } + +public: + CloudABITargetInfo(const llvm::Triple &Triple) + : OSTargetInfo<Target>(Triple) { + this->UserLabelPrefix = ""; + } +}; + namespace { template<typename Target> class DarwinTargetInfo : public OSTargetInfo<Target> { @@ -6871,6 +6893,8 @@ static TargetInfo *AllocateTarget(const llvm::Triple &Triple) { return new DarwinX86_64TargetInfo(Triple); switch (os) { + case llvm::Triple::CloudABI: + return new CloudABITargetInfo<X86_64TargetInfo>(Triple); case llvm::Triple::Linux: return new LinuxTargetInfo<X86_64TargetInfo>(Triple); case llvm::Triple::DragonFly: |