Hi folks, I'm running into this weird issue where the register spills appear to be missing for an "if" block for some reason. For example, the original if/else blocks: --- if reg0 // storeRegToStackSlot for reg1 // do something - missing a load for reg1? else // storeRegToStackSlot for reg1 // do something // loadRegFromStackSlot for reg1 end ---- I tried looking in the LLVM spiller code but it looked like the load should have already been generated at that point. Any suggestions on what I should look for here? Thanks a lot! - Chad -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20150318/1a0d00de/attachment.html>
Would probably help a lot of you posted some real code - both source and the generated assembly code. -- Mats On 18 March 2015 at 06:09, Yang, Cheng-Chih <Cheng-Chih.Yang at amd.com> wrote:> Hi folks, > > I'm running into this weird issue where the register spills appear to be > missing for an "if" block for some reason. For example, the original if/else > blocks: > > --- > if reg0 > > // storeRegToStackSlot for reg1 > // do something > - missing a load for reg1? > > else > // storeRegToStackSlot for reg1 > // do something > // loadRegFromStackSlot for reg1 > end > ---- > > I tried looking in the LLVM spiller code but it looked like the load should > have already been generated at that point. Any suggestions on what I should > look for here? > > Thanks a lot! > - Chad > > > _______________________________________________ > LLVM Developers mailing list > LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev >
Thanks. Let me simplify the code and post it later. After looking into it further, it looks like the "EnableJoining" path in the RegisterCoalescer class has to do with the behavior I'm seeing. Does this sound like the right direction? - Chad -----Original Message----- From: mats.o.petersson at googlemail.com [mailto:mats.o.petersson at googlemail.com] On Behalf Of mats petersson Sent: Wednesday, March 18, 2015 7:35 AM To: Yang, Cheng-Chih Cc: llvmdev at cs.uiuc.edu Subject: Re: [LLVMdev] missing register spills? Would probably help a lot of you posted some real code - both source and the generated assembly code. -- Mats On 18 March 2015 at 06:09, Yang, Cheng-Chih <Cheng-Chih.Yang at amd.com> wrote:> Hi folks, > > I'm running into this weird issue where the register spills appear to > be missing for an "if" block for some reason. For example, the > original if/else > blocks: > > --- > if reg0 > > // storeRegToStackSlot for reg1 > // do something > - missing a load for reg1? > > else > // storeRegToStackSlot for reg1 > // do something > // loadRegFromStackSlot for reg1 > end > ---- > > I tried looking in the LLVM spiller code but it looked like the load > should have already been generated at that point. Any suggestions on > what I should look for here? > > Thanks a lot! > - Chad > > > _______________________________________________ > LLVM Developers mailing list > LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev >