diff options
author | Douglas Katzman <dougk@google.com> | 2015-05-11 15:21:44 +0000 |
---|---|---|
committer | Douglas Katzman <dougk@google.com> | 2015-05-11 15:21:44 +0000 |
commit | f36dddf4266ce863da9a6853523ef9b85fb01662 (patch) | |
tree | 7c128fdd4e1e39bb8a9e0f9fbaad207ae95efb52 /clang/lib/Basic/Targets.cpp | |
parent | 015c7a91f12fba37d0ae656931857a1f00cb6b48 (diff) | |
download | bcm5719-llvm-f36dddf4266ce863da9a6853523ef9b85fb01662.tar.gz bcm5719-llvm-f36dddf4266ce863da9a6853523ef9b85fb01662.zip |
[Sparc] Add support for 'sparcel' to clang.
Differential Revision: http://reviews.llvm.org/D8784
llvm-svn: 237001
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 44584c4501d..9c09942ba13 100644 --- a/clang/lib/Basic/Targets.cpp +++ b/clang/lib/Basic/Targets.cpp @@ -5477,6 +5477,15 @@ public: } }; +// SPARCV8el is the 32-bit little-endian mode selected by Triple::sparcel. +class SparcV8elTargetInfo : public SparcV8TargetInfo { + public: + SparcV8elTargetInfo(const llvm::Triple &Triple) : SparcV8TargetInfo(Triple) { + DescriptionString = "e-m:e-p:32:32-i64:64-f128:64-n32-S64"; + BigEndian = false; + } +}; + // SPARC v9 is the 64-bit mode selected by Triple::sparcv9. class SparcV9TargetInfo : public SparcTargetInfo { public: @@ -6998,6 +7007,21 @@ static TargetInfo *AllocateTarget(const llvm::Triple &Triple) { return new SparcV8TargetInfo(Triple); } + // The 'sparcel' architecture copies all the above cases except for Solaris. + case llvm::Triple::sparcel: + switch (os) { + case llvm::Triple::Linux: + return new LinuxTargetInfo<SparcV8elTargetInfo>(Triple); + case llvm::Triple::NetBSD: + return new NetBSDTargetInfo<SparcV8elTargetInfo>(Triple); + case llvm::Triple::OpenBSD: + return new OpenBSDTargetInfo<SparcV8elTargetInfo>(Triple); + case llvm::Triple::RTEMS: + return new RTEMSTargetInfo<SparcV8elTargetInfo>(Triple); + default: + return new SparcV8elTargetInfo(Triple); + } + case llvm::Triple::sparcv9: switch (os) { case llvm::Triple::Linux: |