Skip to content

Commit 875eec8

Browse files
committed
[DAGCombiner] Propagate nsw/nuw flags
1 parent de95c10 commit 875eec8

File tree

1 file changed

+8
-2
lines changed

1 file changed

+8
-2
lines changed

llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13823,7 +13823,10 @@ SDValue DAGCombiner::visitSIGN_EXTEND(SDNode *N) {
1382313823
} else {
1382413824
// Op is i64, Mid is i8, and Dest is i32. If Op has more than 56 sign
1382513825
// bits, just truncate to i32.
13826-
return DAG.getNode(ISD::TRUNCATE, DL, VT, Op);
13826+
SDNodeFlags Flags;
13827+
Flags.setNoSignedWrap(true);
13828+
Flags.setNoUnsignedWrap(N0->getFlags().hasNoUnsignedWrap());
13829+
return DAG.getNode(ISD::TRUNCATE, DL, VT, Op, Flags);
1382713830
}
1382813831
}
1382913832

@@ -14110,7 +14113,10 @@ SDValue DAGCombiner::visitZERO_EXTEND(SDNode *N) {
1411014113
} else {
1411114114
// Op is i64, Mid is i8, and Dest is i32. If Op has more than 56 sign
1411214115
// bits, just truncate to i32.
14113-
return DAG.getNode(ISD::TRUNCATE, DL, VT, Op);
14116+
SDNodeFlags Flags;
14117+
Flags.setNoSignedWrap(true);
14118+
Flags.setNoUnsignedWrap(true);
14119+
return DAG.getNode(ISD::TRUNCATE, DL, VT, Op, Flags);
1411414120
}
1411514121
}
1411614122
}

0 commit comments

Comments
 (0)