diff options
| author | Nemanja Ivanovic <nemanja.i.ibm@gmail.com> | 2017-07-05 04:51:29 +0000 |
|---|---|---|
| committer | Nemanja Ivanovic <nemanja.i.ibm@gmail.com> | 2017-07-05 04:51:29 +0000 |
| commit | 845a7968bce2857ae1c13ff2789ed70ece6c01a7 (patch) | |
| tree | 8eeff03747a0a4507d735a52e004fed1a0ae0dbc /llvm/lib/Target | |
| parent | 57495596bd9e0f911b0586be873d238c6d591a08 (diff) | |
| download | bcm5719-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.cpp | 6 |
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 |

