<div dir="ltr"><div><div><div><div><div><div>Long story short: <a href="https://llvm.org/bugs/show_bug.cgi?id=31890">https://llvm.org/bugs/show_bug.cgi?id=31890</a><br><br></div>The backend fails to schedule a given DAG, the reason being that there is an instruction and it glue that needs to be broken apart as they can't be scheduled consecutively. See attached file for a picture of the DAG.<br><br></div>Not sure what's the best course of action is, and not sure why this isn't a problem for the X86 backend either. I'm looking for advice on the best course of actions. As I see it, the option are:<br></div><br>1/ add extra logic in the DAGCombiner to make sure this doesn't happen. I don't see a way this could be done cheaply and overall I don't think this is the best option/<br></div>2/ Have the ScheduleDAG machinery detect this case and break up the glue, for instance via breaking up (adde X, Y, Carry) into (add (add X, Y)n (adde 0, 0, Carry)) or something alike when the situation present itself.<br></div>3/ Do whatever the X86 backend does, which I'm not sure what it is.<br><br></div>Advice ?<br><div><div><div><br></div><div>Thanks in advance,<br><br></div><div>Amaury SECHET<br></div><div><br></div></div></div></div>