diff options
Diffstat (limited to 'llvm/lib/CodeGen')
| -rw-r--r-- | llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp b/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp index e2c7dec40c7..1e87d5184f2 100644 --- a/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp +++ b/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp @@ -7816,6 +7816,17 @@ SDValue DAGCombiner::visitCONCAT_VECTORS(SDNode *N) { if (N->getNumOperands() == 1) return N->getOperand(0); + // Check if all of the operands are undefs. + bool AllUndef = true; + for (unsigned i = 0; i < N->getNumOperands(); ++i) + if (N->getOperand(i).getOpcode() != ISD::UNDEF) { + AllUndef = false; + break; + } + + if (AllUndef) + return DAG.getUNDEF(N->getValueType(0)); + return SDValue(); } |

