Skip to content

Commit

Permalink
Merge pull request #34190 from JuliaLang/vc/llvmpatches
Browse files Browse the repository at this point in the history
add llvm patches
  • Loading branch information
vchuravy committed Dec 26, 2019
2 parents ce498d6 + 79ce5ca commit 2835347
Show file tree
Hide file tree
Showing 128 changed files with 257 additions and 61 deletions.
2 changes: 1 addition & 1 deletion deps/Versions.make
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
LLVM_VER = 8.0.1
LLVM_BB_REL = 3
LLVM_BB_REL = 4
PCRE_VER = 10.31
PCRE_BB_REL = 0
DSFMT_VER = 2.2.3
Expand Down

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
3a40d0695daa380c92c5e8f9b40a600f
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
1c83533a6e16aa591ba1f7c71d567aa17d44e63e15cd6290aeea10e6f6b34561cc1ee84a1664963219015ecd17de9aa2fe300419e2ede0ebc67f8e07dbf09845
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
3c5e7f43cb2107bf364b5a0e1031199c
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
c7f4d2f50d9413480d78a00e968a49f2da9f44d83715757ee766b67ee979b27e4a9ea27384721fce11c7f28729b834be57b1c4e58ff8e9d92a44208c945d3867
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
f640ee934e75908460d84519f3a7eac1
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
add4ed291bc43a048a13f75854e609a25845c86186846a09022ac1a0c53fda6b1e181ee10cb9365350be627f0dccaa8896cf87c9b0e61b8673f51980e8cdb723
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
4e07d8baf6281f1d0c62a4e54834aab9
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
1ee00637cabcf2574d7fa9b938d46e4083e48bc6d8b2ae1faf16dc2e8d58d27795ab1d0df3f818bc9e5200b7b30bbb3c4370e82e9e1b75f704f177e8415015f4
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
046e76a35cb01014b25e89716fe75620
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
aabaedac5a3720a8403712ea13dd23bee7ec248c6f4c6d342c6146cde508053dc7ace18e95e764f8a08ed9ddcf2e0b4510450e426347ea164da2b41d8c5a1255
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
e96c5d67899aab1efa054321c6ad53fd
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
8a6ce4bdb749b32313c2fe8cd2d18b807aba4f832f719f8b7f02ea0e2aff6861e360a4433b9a3051d4ccd6d8e258c44fb784942d9706afc7f39e7577cab2f3f3
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
2ba8503511f659a4e9144d7d249b4f78
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
92aff623242655235209fc281e15f33a51a6c74cc5d39bb10e1486654e95ada45d66ab94bbfaaaad17a2f5e0948af0186a87d51f2f74a64642ad1d4f584c602e
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
d728405a744d9721d982db2e41e89c2a
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
e1a69ee7cbb081d8ba3893ebf5be078ab083396d75074428ba042511bc555ce523ee074019a18f806d1a81a967bf344d251e2307fb52355a471bdc8dfd487dc5
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
5454e0ae32ec2d007cdff0932a7258ba
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
2b5b2575648f17a59c5376b8abbc88d313a381019d7eced003045ed6c6ddf9a967d7abef57f62bb42197cba102153da01347f292468e16839d98b08f0c0eb319
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
e32ad02a8a6331f27d9ce2f8ee288cb4
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
412e51ba962729b98980c6f7ef285f7d3798fcf6e5c1ad2a8cebf54247d0c35507d70d74f237e31bf76655369fcabd79b4be58c41bdbdf4be50fd8e11cbc7d6a
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
427e9b4adf081653a0079c5c84fc531f
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
f771d54d28b037d6e497c5d707996c30ed4b9654caaec2d8a85664c65dea94519d42b349583da86bbd936e8b913a4c81b2612c1b91ea54fcd1191df7f05eb4c9
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
d16df3997443050fbd212fa38c5a671e
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
a9bc4808aec11be94ed2b2bb78db3c2c9195f05681709942fb2630101d5e77a30dd970c015fcba85bc2072a676bafcab369ce20ee2925a378e45c6fc5b27a926
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
c9693bdb0670329c2510f37958c2c2fe
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
e6e86bdadd25bbdffeab4f1ef1ac4922159aa3c7d7bfb9a41baa3bec7704f98c9bac457e79388af2bc74010830ccd9b0334e24b906c22b3a791729c4c20e2c05
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
c0fc775f9eee8438b13bf105628c1a2c
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
35f59b4e233d5e76ffab111aac45ee1d9e1a0430b9a95c781e22b2ee7801332f1cb1579f89d047edf5251c6c7b1697031fea0eb81934d3efdc6f4fe611136d80
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
dea6f4e54189e0935d3067c7a24c3a1d
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
717f3fe0a8d7104b5044ff8fd55fe5e308f4c31f785276056756490b7e9288dd32707ef01138610f9e0fe1a72c0aed21a90e68988bd7c7f48b553ce082aa4b49
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
991b6650edcae3d37471821d756dea82
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
406e828cb0e248d2745f7dec084f09ed3eeb3c603a0985b8a099810117f6055d288cbb1297790b9d6b6f83b7931d79e8ab563efa74c58d3c2e9f4ed480770dc2
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
619dea249aa498b48d9e1cea6033c0b3
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
d42490d131e5919f584ef655291a891036b98ecea61ec0402b55dacd86387d995d2e792a7ff40ad68b55074114c34720277512abd78a544b8079e054fc0483a9
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
d5398c0f1d2febb7d5020611d8afb5e9
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
6df6d1e309aabb808052139a436b43b1653fa5cfc8c5935fcddfc523afabeab1df62941bbb2d3dd4af5312f35507d23f62111fc3235c6891bf6f66154645b80f
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
2639e30a78883527dc403365b839569b
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
fcd6c2ad5e8d706d1412e5e93e12337aa2a39d80ffe5cda047322260c6d032f42bd31d631a1b8d1ea84bcfbb30c968dd873b3a02e3e5a6d4848987fa178b7ba3
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
2a1b70f97310caa087c6be5038d24788
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
922161091a23cbf651d4b4700423a286ec450d1005b4e1043e62496ac525739efafd2c505cb8ccc1e63d1d22f84fa8d9b3407f1f3a30e30afd58fe2e3c45ef30
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
33839efd517cf2f144b21b889143b334
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
8a8c9a2c485ebdec6473a73c03329c4e3eb9c560b546e225e5aa96d3083ecb65f61339b4710fbf791f6e989549b5d880765bc79e1f3ba1998e99c981cccc6310
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
7886ad586a0f7aecb003908a68612f8e
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
99f2a65873f84b2fcaffde7c1d3ee936f54e14296e5435d9be47e1bdd6eaf66ffd48d7c2f3bba9936a4a3a7779f5dd6e079f84fad7ed10670688c21103a7e850
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
70e152e4e3f80d5180f744b310aa2ff8
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
ce2b745ec4dfac5e65dbca1aed82c7a5c875b22e704547aff291d205da5dd1eba71ba159659562cd0dbbec9d468819c4d5c851eb0d3545295e9e85350a4f5fab
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
800e65ebd854a9dfdee3262f8fc64171
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
2c5532b17fc0256018fb563c2fbaa5e6a6d2ff5fba31484f879fab0316c64894f8da85b56e9845a4696dad059d5b017e9ca8ad2b88bbb537fd8610590e9c7368
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
3e8abe766bdd486630e9e4d1fdf9cedd
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
0acaa7ad32c0eff145e7c7906e2774972f5043f6cebca38579e7123676cd3b3f7157d2f8aaab0401fb54a00ced423399bf9ed8d9f4ad58e4100fa1fead87eff8
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
993d4b29f6f6617aecd530bb10175a35
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
1d5edb79b5274e78f23d7ec989957d0d652eeaaf784e39e30108180953e362800358527c9cc329eb58e5ff3e858047385ba9f3cf1e69847f351349a0bfddf28e
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
79eafa83a8a1933337a5c1c75f7de868
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
bdbe1a39d345be76c38d5a5937f2d752d8554e7053a58ad3b2d6c48eaba6244852ac703649ff947a83a301bee284cc7e4df4d83d7f24a4e0a854eb24462dc0cf
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
1d9532476cc9c91cbd800ed0d76f55aa
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
89c42e45d6784c88b31856d47af47d4736eeb4034ebe2c77ecc40adabf094809489a94a125b69a58b08e9e4be67d841409dc3a41dae9499c6fc2642adaff164d
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
57d2a92d1f92236e99c6546f37188647
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
da43824faff4943038f1c1be16d3ab1a3f673a0153a3aad289a3050a96ac09bcedc560be9bade4ea1954cd93038b3d6473d3e12f2de7ac9a390fed7eade8c8a8
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
edce33591e4e180f2b3a8c56bd1128e2
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
c51e0519cdd198842c1ee249f75118975c761f38a37b5e59232a5fd9efe19f4e009014319c865e1046e0bac3d63ee99e54bb10b7940ebd71ffc989591e08b9be
1 change: 1 addition & 0 deletions deps/checksums/llvm-9.0.0.src.tar.xz/md5
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
0fd4283ff485dffb71a4f1cc8fd3fc72
1 change: 1 addition & 0 deletions deps/checksums/llvm-9.0.0.src.tar.xz/sha512
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
1bb3341e1d231559b948f1505b33c2e2e03989f9b8bbfef0e0cdaff5ac43f85574c9ec5ac53399b914f497d6899425d861411024e8d7e1d1a338c1c6951ac658
4 changes: 4 additions & 0 deletions deps/llvm.mk
Original file line number Diff line number Diff line change
Expand Up @@ -462,6 +462,8 @@ $(eval $(call LLVM_PATCH,llvm-8.0-D63688-wasm-isLocal)) # remove for 9.0
$(eval $(call LLVM_PATCH,llvm-8.0-D55758-tablegen-cond)) # remove for 9.0
$(eval $(call LLVM_PATCH,llvm-8.0-D59389-refactor-wmma)) # remove for 9.0
$(eval $(call LLVM_PATCH,llvm-8.0-D59393-mma-ptx63-fix)) # remove for 9.0
$(eval $(call LLVM_PATCH,llvm-8.0-D66657-codegen-degenerate)) # remove for 10.0
$(eval $(call LLVM_PATCH,llvm-8.0-D71495-vectorize-freduce)) # remove for 10.0
endif # LLVM_VER 8.0

ifeq ($(LLVM_VER_SHORT),9.0)
Expand All @@ -476,6 +478,8 @@ $(eval $(call LLVM_PATCH,llvm8-WASM-addrspaces)) # WebAssembly
$(eval $(call LLVM_PATCH,llvm-exegesis-mingw)) # mingw build
$(eval $(call LLVM_PATCH,llvm-test-plugin-mingw)) # mingw build
$(eval $(call LLVM_PATCH,llvm7-revert-D44485))
$(eval $(call LLVM_PATCH,llvm-8.0-D66657-codegen-degenerate)) # remove for 10.0
$(eval $(call LLVM_PATCH,llvm-8.0-D71495-vectorize-freduce)) # remove for 10.0
endif # LLVM_VER 9.0


Expand Down
65 changes: 65 additions & 0 deletions deps/patches/llvm-8.0-D66657-codegen-degenerate.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
From 4c7e1defbddafcfcfe1211b041d43a36114a8f48 Mon Sep 17 00:00:00 2001
From: Valentin Churavy <v.churavy@gmail.com>
Date: Sat, 14 Dec 2019 10:33:30 -0500
Subject: [PATCH 2/2] [CodegenPrepare] Guard against degenerate branches

Summary:
Guard against a potential crash observed in https://github.com/JuliaLang/julia/issues/32994#issuecomment-524249628
If two branches are collapsed we can encounter a degenerate conditional branch `TBB==FBB`.
The subsequent code assumes that they differ, so we exit out early.

Reviewers: ributzka, spatel

Subscribers: loladiro, dexonsmith, hiraditya, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D66657
---
llvm/lib/CodeGen/CodeGenPrepare.cpp | 4 ++++
.../CodeGen/X86/codegen-prepare-collapse.ll | 18 ++++++++++++++++++
2 files changed, 22 insertions(+)
create mode 100644 llvm/test/CodeGen/X86/codegen-prepare-collapse.ll

diff --git a/lib/CodeGen/CodeGenPrepare.cpp b/lib/CodeGen/CodeGenPrepare.cpp
index c35f8666fa3..3647641c594 100644
--- a/lib/CodeGen/CodeGenPrepare.cpp
+++ b/lib/CodeGen/CodeGenPrepare.cpp
@@ -6929,6 +6929,10 @@ bool CodeGenPrepare::splitBranchCondition(Function &F) {
if (Br1->getMetadata(LLVMContext::MD_unpredictable))
continue;

+ // The merging of mostly empty BB can cause a degenerate branch.
+ if (TBB == FBB)
+ continue;
+
unsigned Opc;
Value *Cond1, *Cond2;
if (match(LogicOp, m_And(m_OneUse(m_Value(Cond1)),
diff --git a/test/CodeGen/X86/codegen-prepare-collapse.ll b/test/CodeGen/X86/codegen-prepare-collapse.ll
new file mode 100644
index 00000000000..18e3ef7afbd
--- /dev/null
+++ b/test/CodeGen/X86/codegen-prepare-collapse.ll
@@ -0,0 +1,18 @@
+; RUN: llc -fast-isel=true -O1 -mtriple=x86_64-unkown-linux-gnu -start-before=codegenprepare -stop-after=codegenprepare -o - < %s | FileCheck %s
+
+; CHECK-LABEL: @foo
+define void @foo() {
+top:
+; CHECK: br label %L34
+ br label %L34
+
+L34: ; preds = %L34, %L34, %top
+ %.sroa.075.0 = phi i64 [ undef, %top ], [ undef, %L34 ], [ undef, %L34 ]
+ %0 = icmp sgt i8 undef, -1
+ %cond5896 = icmp eq i8 0, 2
+ %cond58 = and i1 %cond5896, %0
+; During codegenprepare such degenerate branches can occur and should not
+; lead to crashes.
+; CHECK: br label %L34
+ br i1 %cond58, label %L34, label %L34
+}
--
2.24.1

Loading

4 comments on commit 2835347

@nanosoldier
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Executing the daily benchmark build, I will reply here when finished:

@nanosoldier runbenchmarks(ALL, isdaily = true)

@nanosoldier
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Executing the daily package evaluation, I will reply here when finished:

@nanosoldier runtests(ALL, isdaily = true)

@nanosoldier
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Your benchmark job has completed - possible performance regressions were detected. A full report can be found here. cc @ararslan

@nanosoldier
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Your test job has completed - possible new issues were detected. A full report can be found here. cc @maleadt

Please sign in to comment.