diff options
Diffstat (limited to 'lib/Basic')
-rw-r--r-- | lib/Basic/Targets.cpp | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/lib/Basic/Targets.cpp b/lib/Basic/Targets.cpp index 9a1dd50433..c9491183b1 100644 --- a/lib/Basic/Targets.cpp +++ b/lib/Basic/Targets.cpp @@ -394,6 +394,29 @@ public: } }; +// Bitrig Target +template<typename Target> +class BitrigTargetInfo : public OSTargetInfo<Target> { +protected: + virtual void getOSDefines(const LangOptions &Opts, const llvm::Triple &Triple, + MacroBuilder &Builder) const { + // Bitrig defines; list based off of gcc output + + Builder.defineMacro("__Bitrig__"); + DefineStd(Builder, "unix", Opts); + Builder.defineMacro("__ELF__"); + if (Opts.POSIXThreads) + Builder.defineMacro("_REENTRANT"); + } +public: + BitrigTargetInfo(const std::string &triple) + : OSTargetInfo<Target>(triple) { + this->UserLabelPrefix = ""; + this->TLSSupported = false; + this->MCountName = "__mcount"; + } +}; + // PSP Target template<typename Target> class PSPTargetInfo : public OSTargetInfo<Target> { @@ -2443,6 +2466,18 @@ public: } // end anonymous namespace namespace { +class BitrigI386TargetInfo : public BitrigTargetInfo<X86_32TargetInfo> { +public: + BitrigI386TargetInfo(const std::string& triple) : + BitrigTargetInfo<X86_32TargetInfo>(triple) { + SizeType = UnsignedLong; + IntPtrType = SignedLong; + PtrDiffType = SignedLong; + } +}; +} // end anonymous namespace + +namespace { class DarwinI386TargetInfo : public DarwinTargetInfo<X86_32TargetInfo> { public: DarwinI386TargetInfo(const std::string& triple) : @@ -2776,6 +2811,18 @@ public: } // end anonymous namespace namespace { +class BitrigX86_64TargetInfo : public BitrigTargetInfo<X86_64TargetInfo> { +public: + BitrigX86_64TargetInfo(const std::string& triple) + : BitrigTargetInfo<X86_64TargetInfo>(triple) { + IntMaxType = SignedLongLong; + UIntMaxType = UnsignedLongLong; + Int64Type = SignedLongLong; + } +}; +} // end anonymous namespace + +namespace { class ARMTargetInfo : public TargetInfo { // Possible FPU choices. enum FPUMode { @@ -4155,6 +4202,8 @@ static TargetInfo *AllocateTarget(const std::string &T) { return new NetBSDTargetInfo<ARMTargetInfo>(T); case llvm::Triple::OpenBSD: return new OpenBSDTargetInfo<ARMTargetInfo>(T); + case llvm::Triple::Bitrig: + return new BitrigTargetInfo<ARMTargetInfo>(T); case llvm::Triple::RTEMS: return new RTEMSTargetInfo<ARMTargetInfo>(T); default: @@ -4314,6 +4363,8 @@ static TargetInfo *AllocateTarget(const std::string &T) { return new NetBSDI386TargetInfo(T); case llvm::Triple::OpenBSD: return new OpenBSDI386TargetInfo(T); + case llvm::Triple::Bitrig: + return new BitrigI386TargetInfo(T); case llvm::Triple::FreeBSD: return new FreeBSDTargetInfo<X86_32TargetInfo>(T); case llvm::Triple::Minix: @@ -4349,6 +4400,8 @@ static TargetInfo *AllocateTarget(const std::string &T) { return new NetBSDTargetInfo<X86_64TargetInfo>(T); case llvm::Triple::OpenBSD: return new OpenBSDX86_64TargetInfo(T); + case llvm::Triple::Bitrig: + return new BitrigX86_64TargetInfo(T); case llvm::Triple::FreeBSD: return new FreeBSDTargetInfo<X86_64TargetInfo>(T); case llvm::Triple::Solaris: |