diff options
Diffstat (limited to 'clang/Driver/Targets.cpp')
| -rw-r--r-- | clang/Driver/Targets.cpp | 62 |
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. |

