[project @ 2000-01-28 18:07:55 by sewardj]
Modifications to make x86 register spilling to work reasonably. It should work ok most of the time, although there is still a remote possibility that the allocator simply will be unable to complete spilling, and will just give up. -- Incrementally try with 0, 1, 2 and 3 spill regs, so as not to unduly restrict the supply of regs in code which doesn't need spilling. -- Remove the use of %ecx for shift values, so it is always available as the first-choice spill temporary. For code which doesn't do int division, make %edx and %eax available for spilling too. Shifts by a non-constant amount (very rare) are now done by a short test-and-jump sequence, so that %ecx is not tied up. -- x86 FP: do sin, cos, tan in-line so we get the same answers as gcc. -- Moved a little code around to remove recursive dependencies. -- Fix a subtle bug in x86 regUsage, which could cause underestimation of live ranges.
Showing
- ghc/compiler/nativeGen/AsmCodeGen.lhs 2 additions, 2 deletionsghc/compiler/nativeGen/AsmCodeGen.lhs
- ghc/compiler/nativeGen/AsmRegAlloc.lhs 74 additions, 41 deletionsghc/compiler/nativeGen/AsmRegAlloc.lhs
- ghc/compiler/nativeGen/MachCode.lhs 77 additions, 9 deletionsghc/compiler/nativeGen/MachCode.lhs
- ghc/compiler/nativeGen/MachMisc.hi-boot 2 additions, 1 deletionghc/compiler/nativeGen/MachMisc.hi-boot
- ghc/compiler/nativeGen/MachMisc.hi-boot-5 2 additions, 1 deletionghc/compiler/nativeGen/MachMisc.hi-boot-5
- ghc/compiler/nativeGen/MachMisc.lhs 5 additions, 0 deletionsghc/compiler/nativeGen/MachMisc.lhs
- ghc/compiler/nativeGen/MachRegs.lhs 5 additions, 34 deletionsghc/compiler/nativeGen/MachRegs.lhs
- ghc/compiler/nativeGen/PprMach.lhs 30 additions, 4 deletionsghc/compiler/nativeGen/PprMach.lhs
- ghc/compiler/nativeGen/RegAllocInfo.lhs 132 additions, 30 deletionsghc/compiler/nativeGen/RegAllocInfo.lhs
Loading
Please register or sign in to comment