You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Don't record chain or glue operands in stackmap DAG nodes.
In the last LLVM sync, I tickled a bug in the "large stackmap locations"
support that we added to ykllvm a while back. It manifested when building
yklua. An "I shouldn't have already visited this node" assertion fails:
```
ld.lld: llvm/lib/CodeGen/SelectionDAG/ScheduleDAGSDNodes.cpp:393: void llvm::ScheduleDAGSDNodes::BuildSchedUnits(): Assertion `N->getNodeId() == -1 && "Node already inserted!"' failed.
```
Upon inspecting the DAGs, the stackmap nodes contain glue and chain operands as
constituents of live variables. That makes zero sense! We are effectively
asking the compiler to record the location of something which isn't a piece of
data!
It causes two incoming glue and chains edges for some stackmap nodes, hence the
assertion failure (two visits instead of one).
This change omits chain and glue nodes when pushing stackmap operands and adds
an assertion to catch this problem should it arise again.
0 commit comments