Splitting floating point intervals.

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::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.