Skip to content
Browse files

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
  • Loading branch information...
1 parent b941afa commit 5dc4bb5bd3d0e995e13054a94b6d63490561ed9c @DimitryAndric DimitryAndric committed
Showing with 4 additions and 1 deletion.
  1. +4 −1 contrib/llvm/lib/CodeGen/SelectionDAG/LegalizeTypes.cpp
View
5 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.
}
}

0 comments on commit 5dc4bb5

Please sign in to comment.
Something went wrong with that request. Please try again.