[GHC] #8900: Strictness analysis regression
GHC
ghc-devs at haskell.org
Tue Mar 25 08:18:52 UTC 2014
#8900: Strictness analysis regression
--------------------------------------------+------------------------------
Reporter: tibbe | Owner:
Type: bug | Status: closed
Priority: normal | Milestone:
Component: Compiler | Version: 7.8.1-rc2
Resolution: fixed | Keywords:
Operating System: MacOS X | Architecture: x86_64
Type of failure: Runtime performance bug | (amd64)
Test Case: | Difficulty: Unknown
Blocking: | Blocked By:
| Related Tickets:
--------------------------------------------+------------------------------
Comment (by simonmar):
> one difference between 7.6.3 and HEAD is the extra stack spilling before
the eval check I reported in #8905
I was surprised by this, because I would expect HEAD and 7.6.3 to generate
very similar code with respect to spilling before a call. #8905 is about
an improvement we can make in the new code generator, that wasn't possible
in the old codegen.
Looking at your dumps I see this for HEAD in `$wpoly_go_info`:
{{{
c5k9:
I64[Sp - 40] = PicBaseReg + block_c53R_info;
R1 = R6;
I64[Sp - 32] = R2;
I64[Sp - 24] = R3;
P64[Sp - 16] = R4;
I64[Sp - 8] = R5;
Sp = Sp - 40;
if (R1 & 7 != 0) goto c53R; else goto c53S;
}}}
and this for 7.6.3:
{{{
I64[Sp - 32] = R5;
I64[Sp - 24] = R4;
I64[Sp - 16] = R3;
I64[Sp - 8] = R2;
R1 = R6;
I64[Sp - 40] = PicBaseReg + s30b_info;
Sp = Sp - 40;
if (R1 & 7 != 0) goto c3zM;
}}}
they look identical to me modulo reordering and things falling into
different stack slots. Maybe the problematic bit is somewhere else -
could you point to it?
Some of the other differences you're seeing are due to the fact that the
new codegen (with the NCG) doesn't break up functions at proc-points, so
you see larger chunks of code where 7.6.3 broke things into smaller
pieces. Most of the time this won't make any difference to the generated
code, unless there's a join point (a let-no-escape) where HEAD should
generate better code.
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/8900#comment:24>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list