[LLVMdev] handleMoveIntoBundle assertion

Ivan Llopard ivanllopard at gmail.com
Fri May 25 15:52:06 PDT 2012


Hi,

I have a custom scheduler/bundler running just after coalescing as 
proposed by the current infrastructure of machine schedulers. Btw, great 
thanks for this cool stuff !
I'm running into problems when I want to update the LI information of an 
instruction. I call handleMoveIntoBundle() to make its LI begins from 
the packet header but the following assertion is raised:

"Can't have two defs for the same variable exiting a bundle." in 
moveExitingFromInto()

IIUC, handleMoveIntoBundle collects entering, internal and exiting live 
ranges from the bundle and group all this information into BundleRanges. 
Then it collects the same information for the incoming instruction and 
add it to the current BundleRanges while updating its live ranges.
I found that entering, internal and exiting live ranges of the packet 
are not cleared before collecting the same information for the incoming 
instruction. The attached patch fix it.
Unfortunately, I can't provide a test case but it can be easily tested 
by calling handleMoveIntoBundle() with 2 arbitrary MI's where the packet 
contains a register def.

Ivan
-------------- next part --------------
A non-text attachment was scrubbed...
Name: handleMoveIntoBundle.patch
Type: text/x-patch
Size: 536 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20120526/6c6f9a7b/attachment.bin>


More information about the llvm-dev mailing list