forked from OSchip/llvm-project
[DAG] Cleanup unused node in SimplifySelectCC.
Delete temporarily constructed node uses for analysis after it's use, holding onto original input nodes. Ideally this would be rewritten without making nodes, but this appears relatively complex. Reviewers: spatel, RKSimon, craig.topper Subscribers: jdoerfert, hiraditya, deadalnix, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D57921 llvm-svn: 356382
This commit is contained in:
parent
c131e0e2ae
commit
55c921f4bf
|
@ -18934,14 +18934,13 @@ SDValue DAGCombiner::SimplifySelectCC(const SDLoc &DL, SDValue N0, SDValue N1,
|
|||
auto *N3C = dyn_cast<ConstantSDNode>(N3.getNode());
|
||||
|
||||
// Determine if the condition we're dealing with is constant.
|
||||
SDValue SCC = SimplifySetCC(getSetCCResultType(CmpOpVT), N0, N1, CC, DL,
|
||||
false);
|
||||
if (SCC.getNode()) AddToWorklist(SCC.getNode());
|
||||
|
||||
if (auto *SCCC = dyn_cast_or_null<ConstantSDNode>(SCC.getNode())) {
|
||||
// fold select_cc true, x, y -> x
|
||||
// fold select_cc false, x, y -> y
|
||||
return !SCCC->isNullValue() ? N2 : N3;
|
||||
if (SDValue SCC = DAG.FoldSetCC(VT, N0, N1, CC, DL)) {
|
||||
AddToWorklist(SCC.getNode());
|
||||
if (auto *SCCC = dyn_cast<ConstantSDNode>(SCC)) {
|
||||
// fold select_cc true, x, y -> x
|
||||
// fold select_cc false, x, y -> y
|
||||
return !(SCCC->isNullValue()) ? N2 : N3;
|
||||
}
|
||||
}
|
||||
|
||||
if (SDValue V =
|
||||
|
|
|
@ -419,15 +419,14 @@ define i32 @PR17487(i1 %tobool) {
|
|||
;
|
||||
; X64-LIN-LABEL: PR17487:
|
||||
; X64-LIN: # %bb.0:
|
||||
; X64-LIN-NEXT: movd %edi, %xmm0
|
||||
; X64-LIN-NEXT: pextrw $0, %xmm0, %eax
|
||||
; X64-LIN-NEXT: movl %edi, %eax
|
||||
; X64-LIN-NEXT: andl $1, %eax
|
||||
; X64-LIN-NEXT: retq
|
||||
;
|
||||
; X64-WIN-LABEL: PR17487:
|
||||
; X64-WIN: # %bb.0:
|
||||
; X64-WIN-NEXT: andb $1, %cl
|
||||
; X64-WIN-NEXT: movzbl %cl, %eax
|
||||
; X64-WIN-NEXT: andl $1, %eax
|
||||
; X64-WIN-NEXT: retq
|
||||
%tmp = insertelement <2 x i1> undef, i1 %tobool, i32 1
|
||||
%tmp1 = zext <2 x i1> %tmp to <2 x i64>
|
||||
|
|
Loading…
Reference in New Issue