X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=ghc%2Fcompiler%2FnativeGen%2FNOTES;h=437e220a371f400fd95631ea25e17aee3f66b0f3;hb=7a80ff0bd4e771b012f4cae609f840ef30f76ae2;hp=f19375b15394ba2b4a41da39388a0a01b293a34d;hpb=3ba6150e62080bbd0d93375f6ac182dfbc177fcb;p=ghc-hetmet.git diff --git a/ghc/compiler/nativeGen/NOTES b/ghc/compiler/nativeGen/NOTES index f19375b..437e220 100644 --- a/ghc/compiler/nativeGen/NOTES +++ b/ghc/compiler/nativeGen/NOTES @@ -1,22 +1,21 @@ -Known bugs in nativeGen, 000124 (JRS) -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Known bugs/issues in nativeGen, 000228 (JRS) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -All these bugs are for x86; I don't know about sparc/alpha. +-- absC -> stix translation for GET_TAG and in fact anything + to do with the packed-halfword layout info itbl field is + pretty dubious. I think I have it fixed for big and little + endian 32-bit, but it won't work at all on a 64 bit platform. --- argument marshalling for ccall is fundamentally flawed, since - it moves the C stack pointer %esp as it pushes each argument. - Alas, the register allocator spills relative to %esp and - assumes that it doesn't move. Result: if the marshalling code - for a ccall involves any spills, the resulting code will - probably be wrong. +-- 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. - The Right Way to fix this is to copy stuff onto the stack - without moving %esp, then adjust it immediately prior to the - call insn and un-adjust it immediately following it. - --- nofib/spectral/cvh_unboxing exposes some kind of spilling bug - (I think), since there are many references to registers %M229 - etc, which I believe are dynamic registers which didn't get assigned - to real ones. +-- It won't compile on Solaris or Alphas because the insn selectors + are not up-to-date. +-- NCG introduces a massive space leak; I think it generates all the + assembly code before printing any of it out (a depressingly + familiar story ...). Fixing this will await a working heap profiler.