[LLVMdev] SelectionDAG legality: isel creating cycles

David Greene dag at cray.com
Mon Feb 22 08:45:32 PST 2010


On Monday 22 February 2010 10:41:04 David Greene wrote:

> Actually, it looked like this:
>
> MIN
>   LOAD B
>     Chain from PREFETCH
>       Chain from LOAD A
>     NULL
>   LOAD A
>     Chain from ENTRY
>     Some Addressing
>
> LOAD B is from NULL because this is a bugpoint-reduced testcase, so that's
> not an issue.

I suppose one solution would be to not have LOAD B carry the chain from the 
prefetch.  But SelectionDAGBuilder "automatically" gives the node it 
constructs an input from the current root of the DAG.  At some point the 
prefetch is the root and the next thing to be built is LOAD B, so it gets an
operand pointing to the prefetch.

I'll look at this angle some more.  It seems we should be able to break the
cycle here.

Let me know if I'm on the completely wrong track.  :)

                                               -Dave




More information about the llvm-dev mailing list