--- Most of the x86 insn selector code in MachCode.lhs needs to
- be checked against the Rules of the Game recorded in that file.
- I think there are a lot of subtle violations.
-
--- When selecting spill regs, don't use %eax if there is a CALL insn
- (perhaps excluding calls to newCAF, since it doesn't return a
- result).
-
--- Keep track of the stack offset so that correct spill code can
- be generated even if %esp moves. At the moment %esp doesn't
- move, so the problem doesn't exist, but there is a different
- problem: ccalls put args in memory below %esp and only move
- %esp immediately prior to the call. This is dangerous because
- (1) writing below %esp can cause a segmentation fault (as deemed
- by the OS), and (2) if a signal should be handled on that stack
- during argument construction, the args will get silently trashed.
-
- Currently, implementation of GITOF et al use the stack, so are
- incompatible with current ccall implementation. When the latter
- is fixed, GITOF et al should present no problem. Same issue
- applies to GCOS, GSIN, GTAN, GSQRT if they have to truncate their
- result to 32-bit float.
-
--- nofib/real/hidden gets slightly different FP answers from the
- via-C route; possibly due to exp/log not being done in-line.
+-- There may or may not be bugs in some of the x86 insn selector
+ code in MachCode.lhs. I have checked all of it against the
+ Rules of the Game (+ Rules of the game for Amodes) recorded in
+ that file, but am not 100% convinced that it is all correct.
+ I think most of it is, tho.