summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target
diff options
context:
space:
mode:
authorNemanja Ivanovic <nemanja.i.ibm@gmail.com>2017-07-05 04:51:29 +0000
committerNemanja Ivanovic <nemanja.i.ibm@gmail.com>2017-07-05 04:51:29 +0000
commit845a7968bce2857ae1c13ff2789ed70ece6c01a7 (patch)
tree8eeff03747a0a4507d735a52e004fed1a0ae0dbc /llvm/lib/Target
parent57495596bd9e0f911b0586be873d238c6d591a08 (diff)
downloadbcm5719-llvm-845a7968bce2857ae1c13ff2789ed70ece6c01a7.tar.gz
bcm5719-llvm-845a7968bce2857ae1c13ff2789ed70ece6c01a7.zip
[PowerPC] Fix for PR33636
Remove casts to a constant when a node can be an undef. Differential Revision: https://reviews.llvm.org/D34808 llvm-svn: 307120
Diffstat (limited to 'llvm/lib/Target')
-rw-r--r--llvm/lib/Target/PowerPC/PPCISelDAGToDAG.cpp6
1 files changed, 4 insertions, 2 deletions
diff --git a/llvm/lib/Target/PowerPC/PPCISelDAGToDAG.cpp b/llvm/lib/Target/PowerPC/PPCISelDAGToDAG.cpp
index 535b9deaefa..e73056431ff 100644
--- a/llvm/lib/Target/PowerPC/PPCISelDAGToDAG.cpp
+++ b/llvm/lib/Target/PowerPC/PPCISelDAGToDAG.cpp
@@ -4034,11 +4034,13 @@ void PPCDAGToDAGISel::foldBoolExts(SDValue &Res, SDNode *&N) {
O0.getNode(), O1.getNode());
};
+ // FIXME: When the semantics of the interaction between select and undef
+ // are clearly defined, it may turn out to be unnecessary to break here.
SDValue TrueRes = TryFold(ConstTrue);
- if (!TrueRes)
+ if (!TrueRes || TrueRes.isUndef())
break;
SDValue FalseRes = TryFold(ConstFalse);
- if (!FalseRes)
+ if (!FalseRes || FalseRes.isUndef())
break;
// For us to materialize these using one instruction, we must be able to
OpenPOWER on IntegriCloud