summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen
diff options
context:
space:
mode:
authorFlorian Hahn <flo@fhahn.com>2019-01-18 10:00:38 +0000
committerFlorian Hahn <flo@fhahn.com>2019-01-18 10:00:38 +0000
commit1b8177232813a048407bbb43eef18d7f72794b35 (patch)
tree6355c51c0d877dd58b89c95b2860fee2400ec14b /llvm/lib/CodeGen
parent2d7d4a3809cc648c83bdc1d2eff6e00d93a17825 (diff)
downloadbcm5719-llvm-1b8177232813a048407bbb43eef18d7f72794b35.tar.gz
bcm5719-llvm-1b8177232813a048407bbb43eef18d7f72794b35.zip
[SelectionDAG] Add static getMaxNumOperands function to SDNode.
Summary: Use this helper to make sure we use the same value at various places. This will likely be needed at more places were we currently crash because we use more operands than possible. Also makes it easier to change in the future. Reviewers: RKSimon, craig.topper, efriedma, aemerson Reviewed By: RKSimon Subscribers: hiraditya, arsenm, llvm-commits Differential Revision: https://reviews.llvm.org/D56859 llvm-svn: 351537
Diffstat (limited to 'llvm/lib/CodeGen')
-rw-r--r--llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp3
-rw-r--r--llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp2
2 files changed, 2 insertions, 3 deletions
diff --git a/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp b/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp
index 647496c1afc..af81216e344 100644
--- a/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp
+++ b/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp
@@ -9266,8 +9266,7 @@ SDNode *SelectionDAG::isConstantFPBuildVectorOrConstantFP(SDValue N) {
void SelectionDAG::createOperands(SDNode *Node, ArrayRef<SDValue> Vals) {
assert(!Node->OperandList && "Node already has operands");
- assert(std::numeric_limits<decltype(SDNode::NumOperands)>::max() >=
- Vals.size() &&
+ assert(SDNode::getMaxNumOperands() >= Vals.size() &&
"too many operands to fit into SDNode");
SDUse *Ops = OperandRecycler.allocate(
ArrayRecycler<SDUse>::Capacity::get(Vals.size()), OperandAllocator);
diff --git a/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp b/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
index 3390703c7ba..9f09f25f2ff 100644
--- a/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
+++ b/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
@@ -1035,7 +1035,7 @@ SDValue SelectionDAGBuilder::getRoot() {
// If we have >= 2^16 loads then split across multiple token factors as
// there's a 64k limit on the number of SDNode operands.
SDValue Root;
- size_t Limit = (1 << 16) - 1;
+ size_t Limit = SDNode::getMaxNumOperands();
while (PendingLoads.size() > Limit) {
unsigned SliceIdx = PendingLoads.size() - Limit;
auto ExtractedTFs = ArrayRef<SDValue>(PendingLoads).slice(SliceIdx, Limit);
OpenPOWER on IntegriCloud