[haskell-llvm] some trouble getting started
Henning Thielemann
lemming at henning-thielemann.de
Thu Apr 28 15:33:28 BST 2011
On Wed, 27 Apr 2011, Keith Sheppard wrote:
> Fibonacci/Fibonacci.hs:66:13:
> No instance for (ABinOp a Word32 (v c))
> arising from a use of `and' at Fibonacci/Fibonacci.hs:66:13-31
> Possible fix:
> add an instance declaration for (ABinOp a Word32 (v c))
> In a stmt of a 'do' expression: a <- and x (1 :: Word32)
> In the expression:
> do l1 <- newBasicBlock
> l2 <- newBasicBlock
> l3 <- newBasicBlock
> a <- and x (1 :: Word32)
> ....
> In the second argument of `($)', namely
> `\ x y
> -> do l1 <- newBasicBlock
> l2 <- newBasicBlock
> ....'
Note that the way, how arithmetic operators are defined, the type
inference does not work. That is, usually you have to tell LLVM the type
of both operands. It cannot infer the operand types from the result type
or one operand type from the other operand. This is, because the
arithmetic operators support mixes of Value and ConstValue and Word. If
you are happy with all operands being Value and want type inference, then
you might try:
http://code.haskell.org/~thielema/llvm-extra/src/LLVM/Extra/Arithmetic.hs
You may also use latest llvm from code.haskell.org/llvm repository since
this contains some fixes with respect to LLVM-2.8.
More information about the Haskell-llvm
mailing list