Hi all, A question for the register allocation people: I'm currently trying to split intervals over loop boundaries. I have a situation where a floating point value is split over a loop boundary, and the register allocator choses to spill the value outside the loop. That leaves me with a floating point load in the loop preheader, which is crashing LLC with X86FloatingPoint.cpp:305: bool<unnamed>::FPS::processBasicBlock(llvm::MachineFunction&, llvm::MachineBasicBlock&): Assertion `isStackEmpty() && "Stack not empty at end of basic block?"' What's going on here? Where do floating point values which are live over BB boundaries live, if not on the FP stack? Cheers, Lang. -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20100715/a35079c7/attachment.html>
On Wed, Jul 14, 2010 at 10:04 PM, Lang Hames <lhames at gmail.com> wrote:> Hi all, > A question for the register allocation people: > I'm currently trying to split intervals over loop boundaries. I have a > situation where a floating point value is split over a loop boundary, and > the register allocator choses to spill the value outside the loop. That > leaves me with a floating point load in the loop preheader, which is > crashing LLC with > X86FloatingPoint.cpp:305: > bool<unnamed>::FPS::processBasicBlock(llvm::MachineFunction&, > llvm::MachineBasicBlock&): Assertion `isStackEmpty() && "Stack not empty at > end of basic block?"' > What's going on here? Where do floating point values which are live over BB > boundaries live, if not on the FP stack?In memory; it's a limitation of the x87 support. -Eli
Reasonably Related Threads
- [LLVMdev] Bitcode from build-self-4-mingw32
- [LLVMdev] Bitcode from build-self-4-mingw32
- [LLVMdev] Floating Point Register Allocation in X86 backend
- [LLVMdev] Floating Point Register Allocation in X86 backend
- [LLVMdev] Best way to interface with MSVC _ftol2 runtime function for fptoui?