summaryrefslogtreecommitdiffstats
path: root/llvm/test/CodeGen/X86
diff options
context:
space:
mode:
authorKeno Fischer <keno@alumni.harvard.edu>2018-05-18 00:40:52 +0000
committerKeno Fischer <keno@alumni.harvard.edu>2018-05-18 00:40:52 +0000
commit66ab99c3ee9aa716cfe2c7c253de75067e5d1d7b (patch)
tree00823324b236d13fe0bae8dc39f8a3f270db0aac /llvm/test/CodeGen/X86
parent3eb71831e551f913cd2492001858594bed18c8bb (diff)
downloadbcm5719-llvm-66ab99c3ee9aa716cfe2c7c253de75067e5d1d7b.tar.gz
bcm5719-llvm-66ab99c3ee9aa716cfe2c7c253de75067e5d1d7b.zip
[X86DomainReassignment] Don't delete IMPLICIT_DEF nodes
Summary: We cannot simply delete IMPLICIT_DEF nodes. They may be used later (e.g. by a PHI) and deleting them will cause later passes (e.g. LiveVariables) to crash. However, it seems fine to ignore them for purposes of the domain reassignment (as we do with PHI). Fixes PR37430 Fixes JuliaLang/julia#27080 Reviewed By: craig.topper Differential Revision: https://reviews.llvm.org/D46797 llvm-svn: 332680
Diffstat (limited to 'llvm/test/CodeGen/X86')
-rw-r--r--llvm/test/CodeGen/X86/domain-reassignment-implicit-def.ll24
1 files changed, 24 insertions, 0 deletions
diff --git a/llvm/test/CodeGen/X86/domain-reassignment-implicit-def.ll b/llvm/test/CodeGen/X86/domain-reassignment-implicit-def.ll
new file mode 100644
index 00000000000..1716b042d8e
--- /dev/null
+++ b/llvm/test/CodeGen/X86/domain-reassignment-implicit-def.ll
@@ -0,0 +1,24 @@
+; RUN: llc -mcpu=skylake-avx512 -mtriple=x86_64-unknown-linux-gnu %s -o - | FileCheck %s
+
+; Check that the X86 Domain Reassignment pass doesn't drop IMPLICIT_DEF nodes,
+; which would later cause crashes (e.g. in LiveVariables) - see PR37430
+define void @domain_reassignment_implicit_def(i1 %cond, i8 *%mem, float %arg) {
+; CHECK: vxorps %xmm1, %xmm1, %xmm1
+; CHECK: vcmpneqss %xmm1, %xmm0, %k0
+; CHECK: kmovb %k0, (%rsi)
+top:
+ br i1 %cond, label %L19, label %L15
+
+L15: ; preds = %top
+ %tmp47 = fcmp une float 0.000000e+00, %arg
+ %tmp48 = zext i1 %tmp47 to i8
+ br label %L21
+
+L19: ; preds = %top
+ br label %L21
+
+L21: ; preds = %L19, %L15
+ %.sroa.0.0 = phi i8 [ undef, %L19 ], [ %tmp48, %L15 ]
+ store i8 %.sroa.0.0, i8* %mem, align 1
+ ret void
+}
OpenPOWER on IntegriCloud