The issue is at the function definition. In the price point splitting code we
determine that the F1 and D2 registers are not actually used in the body of
`q`. And as such optimize the set of live register tees from R1, F1, D2, F3,
D4 to R1, F3, D4.
Thus in
My conclusion so far: there's no royal way. One can get the instance
dictionary DFunId pretty easy, but then access to the Typechecked AST of
the instance declaration is really needed to find all the method bindings
$c... (that get applied when constructing the dictionary $d...).
2017-09-19 7:38
Let me elaborate a bit more because I clearly missed some points you already
made in your original message. Sorry about that:
I don't think we need a heavyweight solution to this problem (the suggestions
of: disabling overlapping registers for LLVM, or adding a new virtual register
class Vx).
Responses are inline below:
> As the LLVM backend takes off from Cmm, we produce function that always hold
> the always live registers (on x86_64 these are: Base, Sp, Hp, R1, R2, R3, R4,
> R5, R6, SpLim)
> and appends those registers that are live throughout the function call: in the
> case of
Hi,
Am Donnerstag, den 21.09.2017, 14:25 +0200 schrieb Boespflug, Mathieu:
> It took me no more than a couple hours to get this working, but using
> CircleCI, for our fork of GHC. I started from Joachim's TravisCI
> script.
>
> https://circleci.com/gh/tweag/ghc/tree/circleci
>
> It would be
It took me no more than a couple hours to get this working, but using
CircleCI, for our fork of GHC. I started from Joachim's TravisCI
script.
https://circleci.com/gh/tweag/ghc/tree/circleci
It would be trivial to activate this for github.com/ghc/ghc as well.
A few notes:
- It runs ./validate
Some thoughts
* Read Note [Coercion holes] in TyCoRep.
* As you’ll see, generally we don’t create value-bindings for (unboxed)
coercions of type t1 ~# t2. (yes for boxed ones t1 ~ t2). Reasons in the
Note. Exception: for superclasses of Givens we do create(co :: a ~# b) =
| One way to make this happen would be for C-- call nodes to carry information
| about the calling convention of the target (e.g. how many arguments of each
| type the function expects; in the same way identifiers in Core carry their
| type).
That's be entirely possible for "known" calls,
Moritz
Talk to Kavon. He was thinking about passing a struct instead of a huge list
of registers, and only initialising the live fields of the struct. I don't
know whether he ultimately discarded the idea, but it sounded promising.
Simon
| -Original Message-
| From: ghc-devs