aboutsummaryrefslogtreecommitdiff
path: root/contrib/llvm
diff options
context:
space:
mode:
authorDimitry Andric <dim@FreeBSD.org>2013-10-03 17:50:14 +0000
committerDimitry Andric <dim@FreeBSD.org>2013-10-03 17:50:14 +0000
commit75345ac580550ff1f02a82fba2cc8ba4f75fee7d (patch)
tree9adabdf4ecd2cda9837816c2f92aafecab01660d /contrib/llvm
parentde0ce233808c2691ff90cf683111a714680e84ec (diff)
downloadsrc-75345ac580550ff1f02a82fba2cc8ba4f75fee7d.tar.gz
src-75345ac580550ff1f02a82fba2cc8ba4f75fee7d.zip
Pull in r186338 from upstream llvm trunk:
Remove invalid assert in DAGTypeLegalizer::RemapValue There is a comment at the top of DAGTypeLegalizer::PerformExpensiveChecks which, in part, says: // Note that these invariants may not hold momentarily when processing a node: // the node being processed may be put in a map before being marked Processed. Unfortunately, this assert would be valid only if the above-mentioned invariant held unconditionally. This was causing llc to assert when, in fact, everything was fine. Thanks to Richard Sandiford for investigating this issue! Fixes PR16562. This fixes assertions which could occur in the multimedia/ffmpeg1 and multimedia/ffmpeg2 ports. Approved by: re (hrs) Reported by: Matthias Apitz <guru@unixarea.de> MFC after: 3 days
Notes
Notes: svn path=/head/; revision=256024
Diffstat (limited to 'contrib/llvm')
-rw-r--r--contrib/llvm/lib/CodeGen/SelectionDAG/LegalizeTypes.cpp5
1 files changed, 4 insertions, 1 deletions
diff --git a/contrib/llvm/lib/CodeGen/SelectionDAG/LegalizeTypes.cpp b/contrib/llvm/lib/CodeGen/SelectionDAG/LegalizeTypes.cpp
index b6436bf42741..a7d5fb0b6976 100644
--- a/contrib/llvm/lib/CodeGen/SelectionDAG/LegalizeTypes.cpp
+++ b/contrib/llvm/lib/CodeGen/SelectionDAG/LegalizeTypes.cpp
@@ -615,7 +615,10 @@ void DAGTypeLegalizer::RemapValue(SDValue &N) {
// replaced with other values.
RemapValue(I->second);
N = I->second;
- assert(N.getNode()->getNodeId() != NewNode && "Mapped to new node!");
+
+ // Note that it is possible to have N.getNode()->getNodeId() == NewNode at
+ // this point because it is possible for a node to be put in the map before
+ // being processed.
}
}