[PATCH] D11071: Add Windows ARM targets for mingw and cygwin to clang
Martell Malone
martellmalone at gmail.com
Thu Jul 9 14:00:03 PDT 2015
martell updated this revision to Diff 29388.
martell added a comment.
Updated with full file context as requested by Yaron
http://reviews.llvm.org/D11071
Files:
lib/Basic/Targets.cpp
Index: lib/Basic/Targets.cpp
===================================================================
--- lib/Basic/Targets.cpp
+++ lib/Basic/Targets.cpp
@@ -4838,10 +4838,71 @@
}
};
+// Windows ARM, MS (C++) ABI
+class MicrosoftARMTargetInfo : public WindowsARMTargetInfo {
+public:
+ MicrosoftARMTargetInfo(const llvm::Triple &Triple)
+ : WindowsARMTargetInfo(Triple) {
+ TheCXXABI.set(TargetCXXABI::Microsoft);
+ }
+
+ void getTargetDefines(const LangOptions &Opts,
+ MacroBuilder &Builder) const override {
+ WindowsARMTargetInfo::getTargetDefines(Opts, Builder);
+ WindowsARMTargetInfo::getVisualStudioDefines(Opts, Builder);
+ }
+};
+} // end anonymous namespace.
+
+namespace {
+// ARM MinGW target
+class MinGWARMTargetInfo : public WindowsARMTargetInfo {
+public:
+ MinGWARMTargetInfo(const llvm::Triple &Triple)
+ : WindowsARMTargetInfo(Triple) {
+ TheCXXABI.set(TargetCXXABI::GenericARM);
+ }
+
+ void getTargetDefines(const LangOptions &Opts,
+ MacroBuilder &Builder) const override {
+ WindowsARMTargetInfo::getTargetDefines(Opts, Builder);
+ DefineStd(Builder, "WIN32", Opts);
+ DefineStd(Builder, "WINNT", Opts);
+ Builder.defineMacro("_ARM_");
+ addMinGWDefines(Opts, Builder);
+ }
+};
+} // end anonymous namespace
+
+namespace {
+// ARM Cygwin target
+class CygwinARMTargetInfo : public ARMleTargetInfo {
+public:
+ CygwinARMTargetInfo(const llvm::Triple &Triple)
+ : ARMleTargetInfo(Triple) {
+ TLSSupported = false;
+ WCharType = UnsignedShort;
+ DoubleAlign = LongLongAlign = 64;
+ DescriptionString = "e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64";
+ }
+ void getTargetDefines(const LangOptions &Opts,
+ MacroBuilder &Builder) const override {
+ ARMleTargetInfo::getTargetDefines(Opts, Builder);
+ Builder.defineMacro("_ARM_");
+ Builder.defineMacro("__CYGWIN__");
+ Builder.defineMacro("__CYGWIN32__");
+ DefineStd(Builder, "unix", Opts);
+ if (Opts.CPlusPlus)
+ Builder.defineMacro("_GNU_SOURCE");
+ }
+};
+} // end anonymous namespace
+
+namespace {
// Windows ARM + Itanium C++ ABI Target
-class ItaniumWindowsARMleTargetInfo : public WindowsARMTargetInfo {
+class ItaniumWindowsARMTargetInfo : public WindowsARMTargetInfo {
public:
- ItaniumWindowsARMleTargetInfo(const llvm::Triple &Triple)
+ ItaniumWindowsARMTargetInfo(const llvm::Triple &Triple)
: WindowsARMTargetInfo(Triple) {
TheCXXABI.set(TargetCXXABI::GenericARM);
}
@@ -6990,10 +7051,14 @@
switch (Triple.getEnvironment()) {
default:
return new ARMleTargetInfo(Triple);
+ case llvm::Triple::Cygnus:
+ return new CygwinARMTargetInfo(Triple);
+ case llvm::Triple::GNU:
+ return new MinGWARMTargetInfo(Triple);
case llvm::Triple::Itanium:
- return new ItaniumWindowsARMleTargetInfo(Triple);
+ return new ItaniumWindowsARMTargetInfo(Triple);
case llvm::Triple::MSVC:
- return new MicrosoftARMleTargetInfo(Triple);
+ return new MicrosoftARMTargetInfo(Triple);
}
default:
return new ARMleTargetInfo(Triple);
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D11071.29388.patch
Type: text/x-patch
Size: 3172 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20150709/73ff5464/attachment.bin>
More information about the cfe-commits
mailing list