1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2025-02-01 05:01:59 +01:00
llvm-mirror/test/CodeGen/X86/domain-reassignment-implicit-def.ll
Keno Fischer bdf5b58f6a [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
2018-05-18 00:40:52 +00:00

25 lines
896 B
LLVM

; 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
}