summaryrefslogtreecommitdiffstats
path: root/clang/lib/Basic/Targets.cpp
diff options
context:
space:
mode:
authorDouglas Katzman <dougk@google.com>2015-05-11 15:21:44 +0000
committerDouglas Katzman <dougk@google.com>2015-05-11 15:21:44 +0000
commitf36dddf4266ce863da9a6853523ef9b85fb01662 (patch)
tree7c128fdd4e1e39bb8a9e0f9fbaad207ae95efb52 /clang/lib/Basic/Targets.cpp
parent015c7a91f12fba37d0ae656931857a1f00cb6b48 (diff)
downloadbcm5719-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.cpp24
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:
OpenPOWER on IntegriCloud