RE: [commit: ghc] master: Fix bugs in allocMoreStack (#7498, #7510) (03d360f)
Simon Peyton-Jones <[email protected]> Tue, 8 Jan 2013 14:01:49 +0000
| Newsgroups | gmane.comp.lang.haskell.cvs.ghc |
|---|---|
| Message-ID | <59543203684B2244980D7E4057D5FBC13F7F37B5@DB3EX14MBXC312.europe.corp.microsoft.com> |
Four bugs! That must be some kind of record for a single ticket. Well fixed! Yes, works for me now. Thank you. Simon | -----Original Message----- | From: [email protected] [mailto:[email protected]] | On Behalf Of Simon Marlow | Sent: 07 January 2013 15:53 | To: [email protected] | Subject: [commit: ghc] master: Fix bugs in allocMoreStack (#7498, #7510) | (03d360f) | | Repository : ssh://darcs.haskell.org//srv/darcs/ghc | | On branch : master | | http://hackage.haskell.org/trac/ghc/changeset/03d360f289a1c7e93fedf8cfa2 | 74cbe5929cd32c | | >--------------------------------------------------------------- | | commit 03d360f289a1c7e93fedf8cfa274cbe5929cd32c | Author: Simon Marlow <[email protected]> | Date: Mon Jan 7 12:26:29 2013 +0000 | | Fix bugs in allocMoreStack (#7498, #7510) | | There were four bugs here. Clearly I didn't test this enough to | expose the bugs - it appeared to work on x86/Linux, but completely | by | accident it seems. | | 1. the delta was wrong by a factor of the slot size (as noted on | #7498) | | 2. we weren't correctly aligning the stack pointer (sp needs to be | 16-byte aligned on x86/x86_64) | | 3. we were doing the adjustment multiple times in the case of a | block | that was both a return point and a local branch target. To fix this | I | had to add new shim blocks to adjust the stack pointer, and retarget | the original branches. See comment for details. | | 4. we were doing the adjustment for CALL instructions, which is | unnecessary and wrong; only JMPs should be preceded by a stack | adjustment. | | (Someone with a PPC box will need to update the PPC version of | allocMoreStack to fix the above bugs, using the x86 version as a | guide.) | | compiler/nativeGen/AsmCodeGen.lhs | 10 ++-- | compiler/nativeGen/PPC/Instr.hs | 7 +- | compiler/nativeGen/X86/Instr.hs | 124 +++++++++++++++++++++++++++--- | ------- | 3 files changed, 99 insertions(+), 42 deletions(-) | | | Diff suppressed because of size. To see it, use: | | git show 03d360f289a1c7e93fedf8cfa274cbe5929cd32c | | _______________________________________________ | Cvs-ghc mailing list | [email protected] | http://www.haskell.org/mailman/listinfo/cvs-ghc