If you are familiar with LegalizeTypes I will be glad if you can help me with the following scenario.
I’m debugging some ll test that fails with an assertion in “void DAGTypeLegalizer::RemapValue(SDValue &N)” because it does not expect that a remap to a new node exists.
However looking at the code for a while this seems to be a valid case. I see that many times nodes are added to ReplacedValues map as a value when their NodeID is 0, and therefore they might become a NewNode later. As soon as they become NewNode they are analyzed in AnalyzeNewNode() and in this process, which recurs through the new node operands, it’s possible to reach RemapValue and find there the node as a NewNode. That’s the scenario in which my test fails.
But I probably miss something because normally this assertion is not hit.
- Is this assertion correct?
- What is wrong with the scenario that I describe? Or why doesn’t it happen more often?
BTW, I searched in LLVM archives and saw that this assertion was removed in 2008 but returned later. but I couldn’t find an explanation how this should work.