<div dir="ltr"><div dir="ltr">All MachineOperand's that use or define a particular virtual/physical register are kept in a linked list. There is a separate list for each register. This assert is checking that the register being added is consistent with other nodes in the list it is being added to.  There's a map that is referenced by getRegUseDefListHead to find the linked list for a particular register. So it seems like in your case the list and/or map have gotten out of sync somehow. I'm not sure what you're doing wrong to get into this state. Most APIs know about the lists and keep them updated. For example, MachineOperand::setReg removes the old register from its list before changing it.</div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Tue, Dec 15, 2020 at 10:59 AM Bagel via llvm-dev <<a href="mailto:llvm-dev@lists.llvm.org">llvm-dev@lists.llvm.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">What causes this assertion in lib/Codegen/MachineRegisterInfo.cpp?  I am <br>
building a MachineInstruction with a register operand and get this for certain <br>
registers.  What is the "list" keeping track of?  Any idea what I'm doing wrong?<br>
<br>
Thanks,<br>
brian<br>
_______________________________________________<br>
LLVM Developers mailing list<br>
<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a><br>
<a href="https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev" rel="noreferrer" target="_blank">https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</a><br>
</blockquote></div></div>