summaryrefslogtreecommitdiffstats
path: root/clang/Driver/Targets.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'clang/Driver/Targets.cpp')
-rw-r--r--clang/Driver/Targets.cpp62
1 files changed, 62 insertions, 0 deletions
diff --git a/clang/Driver/Targets.cpp b/clang/Driver/Targets.cpp
index 822579018d1..a84780761e3 100644
--- a/clang/Driver/Targets.cpp
+++ b/clang/Driver/Targets.cpp
@@ -13,6 +13,7 @@
//===----------------------------------------------------------------------===//
#include "clang.h"
+#include "clang/AST/Builtins.h"
#include "clang/Basic/Diagnostic.h"
#include "clang/Basic/TargetInfo.h"
#include "llvm/Support/CommandLine.h"
@@ -270,6 +271,47 @@ static void getX86Defines(std::vector<std::string> &Defines, bool is64Bit) {
}
+/// PPC builtin info.
+namespace PPC {
+ enum {
+ LastTIBuiltin = Builtin::FirstTSBuiltin-1,
+#define BUILTIN(ID, TYPE, ATTRS) BI##ID,
+#include "PPCBuiltins.def"
+ LastTSBuiltin
+ };
+
+ static const Builtin::Info BuiltinInfo[] = {
+#define BUILTIN(ID, TYPE, ATTRS) { #ID, TYPE, ATTRS },
+#include "PPCBuiltins.def"
+ };
+
+ static void getBuiltins(const Builtin::Info *&Records, unsigned &NumRecords) {
+ Records = BuiltinInfo;
+ NumRecords = LastTSBuiltin-Builtin::FirstTSBuiltin;
+ }
+} // End namespace PPC
+
+
+/// X86 builtin info.
+namespace X86 {
+ enum {
+ LastTIBuiltin = Builtin::FirstTSBuiltin-1,
+#define BUILTIN(ID, TYPE, ATTRS) BI##ID,
+#include "X86Builtins.def"
+ LastTSBuiltin
+ };
+
+ static const Builtin::Info BuiltinInfo[] = {
+#define BUILTIN(ID, TYPE, ATTRS) { #ID, TYPE, ATTRS },
+#include "X86Builtins.def"
+ };
+
+ static void getBuiltins(const Builtin::Info *&Records, unsigned &NumRecords) {
+ Records = BuiltinInfo;
+ NumRecords = LastTSBuiltin-Builtin::FirstTSBuiltin;
+ }
+} // End namespace X86
+
//===----------------------------------------------------------------------===//
// Specific target implementations.
//===----------------------------------------------------------------------===//
@@ -282,6 +324,10 @@ public:
DarwinTargetInfo::getTargetDefines(Defines);
getPowerPCDefines(Defines, false);
}
+ virtual void getTargetBuiltins(const Builtin::Info *&Records,
+ unsigned &NumRecords) const {
+ PPC::getBuiltins(Records, NumRecords);
+ }
};
} // end anonymous namespace.
@@ -292,6 +338,10 @@ public:
DarwinTargetInfo::getTargetDefines(Defines);
getPowerPCDefines(Defines, true);
}
+ virtual void getTargetBuiltins(const Builtin::Info *&Records,
+ unsigned &NumRecords) const {
+ PPC::getBuiltins(Records, NumRecords);
+ }
};
} // end anonymous namespace.
@@ -302,6 +352,10 @@ public:
DarwinTargetInfo::getTargetDefines(Defines);
getX86Defines(Defines, false);
}
+ virtual void getTargetBuiltins(const Builtin::Info *&Records,
+ unsigned &NumRecords) const {
+ X86::getBuiltins(Records, NumRecords);
+ }
};
} // end anonymous namespace.
@@ -312,6 +366,10 @@ public:
DarwinTargetInfo::getTargetDefines(Defines);
getX86Defines(Defines, true);
}
+ virtual void getTargetBuiltins(const Builtin::Info *&Records,
+ unsigned &NumRecords) const {
+ X86::getBuiltins(Records, NumRecords);
+ }
};
} // end anonymous namespace.
@@ -327,6 +385,10 @@ public:
// TODO: linux-specific stuff.
getX86Defines(Defines, false);
}
+ virtual void getTargetBuiltins(const Builtin::Info *&Records,
+ unsigned &NumRecords) const {
+ X86::getBuiltins(Records, NumRecords);
+ }
};
} // end anonymous namespace.
OpenPOWER on IntegriCloud