Update patches for clang 3.9
Patches 1-2 are just rebased from the earlier version for clang 3.8, no changes in surrounding code there. Patch 3 is necessary to fix a regression in assembling standalone assembly files in 3.9. Patch 4 makes clang work in MSVC mode with the MSVC SDK for ARM (to simplify testing of the toolchain in that mode).
This commit is contained in:
1 parent
5e1fbce075
commit
feac2f56ba
4 files changed
+188
-10
No files matched your search
@@ -1,14 +1,18 @@
|
||||
From de8c959c54b4591b13d7ab0c348bac8d25cc856a Mon Sep 17 00:00:00 2001
|
||||
From 6e83e00fb6c9b858b9ccb1cbeb30198ec85d190d Mon Sep 17 00:00:00 2001
|
||||
From: Martell Malone <martellmalone@gmail.com>
|
||||
Date: Wed, 16 Dec 2015 02:07:06 -0800
|
||||
Subject: [PATCH] use lld and compiler-rt by default
|
||||
Subject: [PATCH 1/4] use lld and compiler-rt by default
|
||||
|
||||
---
|
||||
lib/Driver/ToolChains.h | 4 ++++
|
||||
lib/Driver/Tools.cpp | 2 +-
|
||||
2 files changed, 5 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/lib/Driver/ToolChains.h b/lib/Driver/ToolChains.h
|
||||
index 257750e..831b7ab 100644
|
||||
index 4e5c3f7..c06f695 100644
|
||||
--- a/lib/Driver/ToolChains.h
|
||||
+++ b/lib/Driver/ToolChains.h
|
||||
@@ -649,6 +649,10 @@ public:
|
||||
@@ -680,6 +680,10 @@ public:
|
||||
const llvm::opt::ArgList &DriverArgs,
|
||||
llvm::opt::ArgStringList &CC1Args) const override;
|
||||
|
||||
@@ -20,10 +24,10 @@ index 257750e..831b7ab 100644
|
||||
Tool *getTool(Action::ActionClass AC) const override;
|
||||
Tool *buildLinker() const override;
|
||||
diff --git a/lib/Driver/Tools.cpp b/lib/Driver/Tools.cpp
|
||||
index 20a1035..ec3e42d 100644
|
||||
index 95f2850..3fff6d2 100644
|
||||
--- a/lib/Driver/Tools.cpp
|
||||
+++ b/lib/Driver/Tools.cpp
|
||||
@@ -9600,7 +9600,7 @@ void MinGW::Linker::ConstructJob(Compilation &C, const JobAction &JA,
|
||||
@@ -10376,7 +10376,7 @@ void MinGW::Linker::ConstructJob(Compilation &C, const JobAction &JA,
|
||||
// handled somewhere else.
|
||||
Args.ClaimAllArgs(options::OPT_w);
|
||||
|
||||
@@ -33,5 +37,5 @@ index 20a1035..ec3e42d 100644
|
||||
CmdArgs.push_back("-flavor");
|
||||
CmdArgs.push_back("gnu");
|
||||
--
|
||||
2.6.3
|
||||
2.7.4
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
From a6ab1bd3b1a1f1e4eb8b8490dac5f1b5b4b72e6a Mon Sep 17 00:00:00 2001
|
||||
From 4139cf38b1a16aa49a7b9eed79b0cccec1a70ec8 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Hugo=20Beauz=C3=A9e-Luyssen?= <hugo@beauzee.fr>
|
||||
Date: Mon, 2 May 2016 15:58:31 +0200
|
||||
Subject: [PATCH] Manually revert 0e2452f3055e2e2cad06a55c5ca9c2be13404781
|
||||
Subject: [PATCH 2/4] Manually revert 0e2452f3055e2e2cad06a55c5ca9c2be13404781
|
||||
|
||||
This re-enables mingw detection
|
||||
---
|
||||
@@ -41,5 +41,5 @@ index 938440b..a1dc25b 100644
|
||||
Base += llvm::sys::path::get_separator();
|
||||
findGccLibDir();
|
||||
--
|
||||
2.8.1
|
||||
2.7.4
|
||||
|
||||
@@ -0,0 +1,48 @@
|
||||
From 80b3c6d7fd1cd993de4454e869fadbae8a456ac1 Mon Sep 17 00:00:00 2001
|
||||
From: Renato Golin <renato.golin@linaro.org>
|
||||
Date: Wed, 27 Jul 2016 14:12:20 +0000
|
||||
Subject: [PATCH 3/4] [ARM] Pass thumb as architecture to the underlying tools,
|
||||
when targeting windows
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
This makes sure that the thumb section flag gets set by the assembler.
|
||||
|
||||
Patch by Martin Storsjö.
|
||||
|
||||
Cherry-picked from SVN trunk commit 276869, git mirror commit
|
||||
3f38d952361bac.
|
||||
---
|
||||
lib/Driver/ToolChain.cpp | 4 +++-
|
||||
test/Driver/windows-thumb.s | 2 ++
|
||||
2 files changed, 5 insertions(+), 1 deletion(-)
|
||||
create mode 100644 test/Driver/windows-thumb.s
|
||||
|
||||
diff --git a/lib/Driver/ToolChain.cpp b/lib/Driver/ToolChain.cpp
|
||||
index e96688c..d586350 100644
|
||||
--- a/lib/Driver/ToolChain.cpp
|
||||
+++ b/lib/Driver/ToolChain.cpp
|
||||
@@ -487,8 +487,10 @@ std::string ToolChain::ComputeLLVMTriple(const ArgList &Args,
|
||||
ArchName = "arm";
|
||||
|
||||
// Assembly files should start in ARM mode, unless arch is M-profile.
|
||||
+ // Windows is always thumb.
|
||||
if ((InputType != types::TY_PP_Asm && Args.hasFlag(options::OPT_mthumb,
|
||||
- options::OPT_mno_thumb, ThumbDefault)) || IsMProfile) {
|
||||
+ options::OPT_mno_thumb, ThumbDefault)) || IsMProfile ||
|
||||
+ getTriple().isOSWindows()) {
|
||||
if (IsBigEndian)
|
||||
ArchName = "thumbeb";
|
||||
else
|
||||
diff --git a/test/Driver/windows-thumb.s b/test/Driver/windows-thumb.s
|
||||
new file mode 100644
|
||||
index 0000000..afe5b2d
|
||||
--- /dev/null
|
||||
+++ b/test/Driver/windows-thumb.s
|
||||
@@ -0,0 +1,2 @@
|
||||
+; RUN: %clang -target armv7-windows -c -### %s 2>&1 | FileCheck %s
|
||||
+; CHECK: "-triple" "thumbv7-
|
||||
--
|
||||
2.7.4
|
||||
|
||||
@@ -0,0 +1,126 @@
|
||||
From b9f0418bc4b3f7869d549bb020271c19e69cce26 Mon Sep 17 00:00:00 2001
|
||||
From: Saleem Abdulrasool <compnerd@compnerd.org>
|
||||
Date: Sat, 6 Aug 2016 17:58:24 +0000
|
||||
Subject: [PATCH 4/4] Headers: Add ARM support to intrin.h for MSVC
|
||||
compatibility
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
This fixes compiling with headers from the Windows SDK for ARM, where the
|
||||
YieldProcessor function (in winnt.h) refers to _ARM_BARRIER_ISHST.
|
||||
|
||||
The actual MSVC armintr.h contains a lot more definitions, but this is enough to
|
||||
build code that uses the Windows SDK but doesn't use ARM intrinsics directly.
|
||||
|
||||
An alternative would to just keep the addition to intrin.h (to include
|
||||
armintr.h), but not actually ship armintr.h, instead having clang's intrin.h
|
||||
include armintr.h from MSVC's include directory. (That one works fine with
|
||||
clang, at least for building code that uses the Windows SDK.)
|
||||
|
||||
Patch by Martin Storsjö!
|
||||
|
||||
Cherry-picked from SVN trunk commit 277928, git mirror commit
|
||||
cfc8939a5f1.
|
||||
---
|
||||
lib/Headers/CMakeLists.txt | 1 +
|
||||
lib/Headers/armintr.h | 45 +++++++++++++++++++++++++++++++++++++++++++++
|
||||
lib/Headers/intrin.h | 4 ++++
|
||||
test/Headers/ms-intrin.cpp | 4 ++++
|
||||
4 files changed, 54 insertions(+)
|
||||
create mode 100644 lib/Headers/armintr.h
|
||||
|
||||
diff --git a/lib/Headers/CMakeLists.txt b/lib/Headers/CMakeLists.txt
|
||||
index 657ef7e..600fece 100644
|
||||
--- a/lib/Headers/CMakeLists.txt
|
||||
+++ b/lib/Headers/CMakeLists.txt
|
||||
@@ -3,6 +3,7 @@ set(files
|
||||
altivec.h
|
||||
ammintrin.h
|
||||
arm_acle.h
|
||||
+ armintr.h
|
||||
avx2intrin.h
|
||||
avx512bwintrin.h
|
||||
avx512cdintrin.h
|
||||
diff --git a/lib/Headers/armintr.h b/lib/Headers/armintr.h
|
||||
new file mode 100644
|
||||
index 0000000..933afcb
|
||||
--- /dev/null
|
||||
+++ b/lib/Headers/armintr.h
|
||||
@@ -0,0 +1,45 @@
|
||||
+/*===---- armintr.h - ARM Windows intrinsics -------------------------------===
|
||||
+ *
|
||||
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
+ * of this software and associated documentation files (the "Software"), to deal
|
||||
+ * in the Software without restriction, including without limitation the rights
|
||||
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
+ * copies of the Software, and to permit persons to whom the Software is
|
||||
+ * furnished to do so, subject to the following conditions:
|
||||
+ *
|
||||
+ * The above copyright notice and this permission notice shall be included in
|
||||
+ * all copies or substantial portions of the Software.
|
||||
+ *
|
||||
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
+ * THE SOFTWARE.
|
||||
+ *
|
||||
+ *===-----------------------------------------------------------------------===
|
||||
+ */
|
||||
+
|
||||
+/* Only include this if we're compiling for the windows platform. */
|
||||
+#ifndef _MSC_VER
|
||||
+#include_next <armintr.h>
|
||||
+#else
|
||||
+
|
||||
+#ifndef __ARMINTR_H
|
||||
+#define __ARMINTR_H
|
||||
+
|
||||
+typedef enum
|
||||
+{
|
||||
+ _ARM_BARRIER_SY = 0xF,
|
||||
+ _ARM_BARRIER_ST = 0xE,
|
||||
+ _ARM_BARRIER_ISH = 0xB,
|
||||
+ _ARM_BARRIER_ISHST = 0xA,
|
||||
+ _ARM_BARRIER_NSH = 0x7,
|
||||
+ _ARM_BARRIER_NSHST = 0x6,
|
||||
+ _ARM_BARRIER_OSH = 0x3,
|
||||
+ _ARM_BARRIER_OSHST = 0x2
|
||||
+} _ARMINTR_BARRIER_TYPE;
|
||||
+
|
||||
+#endif /* __ARMINTR_H */
|
||||
+#endif /* _MSC_VER */
|
||||
diff --git a/lib/Headers/intrin.h b/lib/Headers/intrin.h
|
||||
index f18711a..268ac4a 100644
|
||||
--- a/lib/Headers/intrin.h
|
||||
+++ b/lib/Headers/intrin.h
|
||||
@@ -34,6 +34,10 @@
|
||||
#include <x86intrin.h>
|
||||
#endif
|
||||
|
||||
+#if defined(__arm__)
|
||||
+#include <armintr.h>
|
||||
+#endif
|
||||
+
|
||||
/* For the definition of jmp_buf. */
|
||||
#if __STDC_HOSTED__
|
||||
#include <setjmp.h>
|
||||
diff --git a/test/Headers/ms-intrin.cpp b/test/Headers/ms-intrin.cpp
|
||||
index c697428..25c5531 100644
|
||||
--- a/test/Headers/ms-intrin.cpp
|
||||
+++ b/test/Headers/ms-intrin.cpp
|
||||
@@ -60,4 +60,8 @@ void f() {
|
||||
__readcr3();
|
||||
__writecr3(0);
|
||||
#endif
|
||||
+
|
||||
+#ifdef _M_ARM
|
||||
+ __dmb(_ARM_BARRIER_ISHST);
|
||||
+#endif
|
||||
}
|
||||
--
|
||||
2.7.4
|
||||
|
||||
Reference in new issue
Block a user