[LLVMdev] What does this error mean: psuedo instructions should be removed before code emission?

Dale Johannesen dalej at apple.com
Fri Aug 27 16:28:45 PDT 2010


I filed PR 8014 about this.

On Aug 27, 2010, at 4:16 PMPDT, Dale Johannesen wrote:
> On Aug 27, 2010, at 3:43 PMPDT, Yuri wrote:
>> On 08/27/2010 12:13, Dale Johannesen wrote:
>> Here's what happens:
>> The first instruction created is RET.
>> SelectBasicBlock is called.
>> TCRETURNri64 is created from within it.
>> HasTailCall is set to true as you mentioned.
>> Cycle in SelectionDAGISel::SelectBasicBlock skips the rest.
>>
>> All like you described. But the RET instruction still stays in the  
>> end.
>> RET is skipped by visit but I guess stays in the list. Where should  
>> it be destroyed?
>
> Ahh, this is a bug in FastISel, which I didn't have turned on,  
> that's why I wasn't seeing this.  Looks like the rewrite to go  
> bottom-up, 108039, introduced this.  The logic there doesn't work  
> with tail calls.  Dan, could you look?



More information about the llvm-dev mailing list