- 05 Aug, 2012 7 commits
-
-
ian@well-typed.com authored
-
ian@well-typed.com authored
-
ian@well-typed.com authored
-
ian@well-typed.com authored
-
ian@well-typed.com authored
-
ian@well-typed.com authored
-
ian@well-typed.com authored
-
- 03 Aug, 2012 1 commit
-
-
pcapriotti authored
-
- 02 Aug, 2012 14 commits
-
-
Simon Marlow authored
-
Simon Marlow authored
Thanks to Peter Wortmann for pointing out this bug.
-
Simon Marlow authored
-
Simon Marlow authored
-
Simon Marlow authored
-
Simon Marlow authored
Previously these were caught by removeDeadAssignments, but we aren't doing that now.
-
Simon Marlow authored
-
Simon Marlow authored
The new sinker is at least as powerful, and the mini-inliner sometimes even makes things worse.
-
Simon Marlow authored
We now track stack regions, so that we can float a stack load past a stack store if they don't conflict. Also, we now use the CmmType to more accurately identify heap addresses.
-
Simon Marlow authored
Also lots of refactoring and tidyup
-
Simon Marlow authored
-
Simon Marlow authored
-
Simon Marlow authored
See Note [shortcut call returns]
-
Simon Marlow authored
Instead of relying on common-block-elimination to share return continuations in the common case (case-alternative heap checks) we do it explicitly. This isn't hard to do, is more robust, and saves some compilation time. Full commentary in Note [sharing continuations].
-
- 31 Jul, 2012 3 commits
-
-
Simon Marlow authored
There was a long-standing ToDo here that I just did: if a real register is clobbered by the current instruction, then we should move it to another free register rather than spilling it to memory. This case crops up more often now that the register allocator can allocate into the fixed Rn registers.
-
Simon Marlow authored
-
-
- 30 Jul, 2012 13 commits
-
-
ian@well-typed.com authored
-
Simon Marlow authored
-
Simon Marlow authored
-
Simon Marlow authored
-
Simon Marlow authored
-
Simon Marlow authored
-
Simon Marlow authored
We do this in lots of other places (blockConcat, CmmLayoutStack, etc.)
-
Simon Marlow authored
-
Simon Marlow authored
-
Simon Marlow authored
Proc-point splitting is only required by backends that do not support having proc-points within a code block (that is, everything except the native backend, i.e. LLVM and C). Not doing proc-point splitting saves some compilation time, and might produce slightly better code in some cases.
-
Simon Marlow authored
-
Simon Marlow authored
-
Simon Marlow authored
We didn't trip over this one until I started generating code without proc-point splitting, which has more join points and loops.
-
- 29 Jul, 2012 2 commits
-
-
ian@well-typed.com authored
-
Gabor Greif authored
-