From 3ba6150e62080bbd0d93375f6ac182dfbc177fcb Mon Sep 17 00:00:00 2001 From: sewardj Date: Mon, 24 Jan 2000 18:33:34 +0000 Subject: [PATCH] [project @ 2000-01-24 18:33:34 by sewardj] Start a NOTES file, recording known but un-fixed nativeGen bugs. --- ghc/compiler/nativeGen/NOTES | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 ghc/compiler/nativeGen/NOTES diff --git a/ghc/compiler/nativeGen/NOTES b/ghc/compiler/nativeGen/NOTES new file mode 100644 index 0000000..f19375b --- /dev/null +++ b/ghc/compiler/nativeGen/NOTES @@ -0,0 +1,22 @@ + +Known bugs in nativeGen, 000124 (JRS) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +All these bugs are for x86; I don't know about sparc/alpha. + +-- 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. + + 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. + -- 1.7.10.4