[LLVMdev] Problem in X86 backend

Quentin Colombet qcolombet at apple.com
Wed Oct 29 11:49:16 PDT 2014


Hi Julien,

Akira already pointed out the problem.
You have basically two definitions of the same virtual register, which is forbidden in SSA.
I.e., you have:
Reg = something 
...
Reg = Reg + something else

What you want is
Reg = something 
...
Reg2 = Reg + something else
=> you need to create a second virtual register for the second definition.

Cheers,
-Quentin


Envoyé de mon iPhone

Le 29 oct. 2014 à 02:58, Rinaldini Julien <julien.rinaldini at heig-vd.ch> a écrit :

>> Your problem is that kill flag on RDI. Indeed, this is not the last use of RDI in your
>> case and because you set this flag, when jumping to BB#4, the compiler thinks
>> that > RDI is not defined.
>> 
>> Also, I am not sure what you are trying to achieve, but are you sure you always 
>> want to use RDI? In this case, should it be vreg7 for instance?
>> 
>> -Quentin
> 
> Hi, thx for your answer...
> 
> I figured it that out... In fact I changed my code and now I'm using a virtual register, but I still have a problem :( (http://lists.cs.uiuc.edu/pipermail/llvmdev/2014-October/078315.html)
> 
> I'm trying to erase the content of the stack in the epilogue of the function...
> 
> Cheers
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev




More information about the llvm-dev mailing list