Skip to content

Commit 6299650

Browse files
committed
[DAGCombiner] Fold trunc(undef) -> undef.
We already do this in getNode, but the undef might appear during another DAGCombine. While here remove code for handling noop truncates. getNode checks the types and won't a noop truncate. Reviewed By: arsenm Differential Revision: https://reviews.llvm.org/D157910
1 parent a63bd7e commit 6299650

File tree

2 files changed

+6
-13
lines changed

2 files changed

+6
-13
lines changed

llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14340,9 +14340,9 @@ SDValue DAGCombiner::visitTRUNCATE(SDNode *N) {
1434014340
EVT SrcVT = N0.getValueType();
1434114341
bool isLE = DAG.getDataLayout().isLittleEndian();
1434214342

14343-
// noop truncate
14344-
if (SrcVT == VT)
14345-
return N0;
14343+
// trunc(undef) = undef
14344+
if (N0.isUndef())
14345+
return DAG.getUNDEF(VT);
1434614346

1434714347
// fold (truncate (truncate x)) -> (truncate x)
1434814348
if (N0.getOpcode() == ISD::TRUNCATE)

llvm/test/CodeGen/RISCV/pr64503.ll

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,8 @@
44
define i1 @f(i64 %LGV1) {
55
; CHECK-LABEL: f:
66
; CHECK: # %bb.0:
7-
; CHECK-NEXT: li a0, 1
8-
; CHECK-NEXT: beqz a1, .LBB0_2
9-
; CHECK-NEXT: # %bb.1:
10-
; CHECK-NEXT: snez a0, a1
7+
; CHECK-NEXT: sltu a0, a0, a1
118
; CHECK-NEXT: xori a0, a0, 1
12-
; CHECK-NEXT: .LBB0_2:
139
; CHECK-NEXT: ret
1410
%B1 = xor i64 %LGV1, %LGV1
1511
%B2 = srem i64 1, %B1
@@ -21,11 +17,8 @@ define i1 @f(i64 %LGV1) {
2117
define i64 @g(ptr %A, i64 %0) {
2218
; CHECK-LABEL: g:
2319
; CHECK: # %bb.0:
24-
; CHECK-NEXT: li a0, 1
25-
; CHECK-NEXT: beqz a2, .LBB1_2
26-
; CHECK-NEXT: # %bb.1:
27-
; CHECK-NEXT: slti a0, a2, 1
28-
; CHECK-NEXT: .LBB1_2:
20+
; CHECK-NEXT: slt a0, a0, a2
21+
; CHECK-NEXT: xori a0, a0, 1
2922
; CHECK-NEXT: sb a0, 0(zero)
3023
; CHECK-NEXT: ret
3124
store i64 poison, ptr %A, align 4

0 commit comments

Comments
 (0)