[llvm-dev] Problem ScheduleDAG on PowerPC, X86 works fine.

Amaury SECHET via llvm-dev
Tue, 07 Feb 2017 19:48:46 -0000

Long story short: https://llvm.org/bugs/show_bug.cgi?id=31890

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.

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:

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/
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.
3/ Do whatever the X86 backend does, which I'm not sure what it is.

Advice ?

Thanks in advance,

Amaury SECHET
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
<http://lists.llvm.org/pipermail/llvm-dev/attachments/20170207/6808301d/attachment-0001.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: dagisel.png
Type: image/png
Size: 251938 bytes
Desc: not available
URL:
<http://lists.llvm.org/pipermail/llvm-dev/attachments/20170207/6808301d/attachment-0001.png>