Re: The Curious Case of T6084 -or- Register Confusion with LLVM

2017-09-21 Thread Moritz Angermann
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

Re: Determine instance method from class method callsite

2017-09-21 Thread Robin Palotai
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

Re: The Curious Case of T6084 -or- Register Confusion with LLVM

2017-09-21 Thread Kavon Farvardin
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).

Re: The Curious Case of T6084 -or- Register Confusion with LLVM

2017-09-21 Thread Kavon Farvardin
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

CircleCI (Was: Disable Travis?)

2017-09-21 Thread Joachim Breitner
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

Re: Disabling Travis?

2017-09-21 Thread 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 trivial to activate this for github.com/ghc/ghc as well. A few notes: - It runs ./validate

RE: Invariants about UnivCo?

2017-09-21 Thread Simon Peyton Jones via ghc-devs
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) =

RE: The Curious Case of T6084 -or- Register Confusion with LLVM

2017-09-21 Thread Simon Peyton Jones via ghc-devs
| 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,

RE: The Curious Case of T6084 -or- Register Confusion with LLVM

2017-09-21 Thread Simon Peyton Jones via ghc-devs
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