[project @ 2000-08-01 09:08:25 by simonpj]
[ghc-hetmet.git] / ghc / compiler / NOTES
1 Notes July 00
2 ~~~~~~~~~~~~~~
3 Time.lhs: fails with too many arguments to C function
4 works with native code gen
5
6 CTypes.lhs: fails with
7     /tmp/ghc2840.hc:42413: fixed or forbidden register 3 (bx) was spilled for class GENERAL_REGS.
8     This may be due to a compiler bug or to impossible asm statements or clauses.
9 works without -O
10
11 posix/* fails with
12       ghc1653.c:4: `#include' expects "FILENAME" or <FILENAME>
13       ghc1653.c:6: `#include' expects "FILENAME" or <FILENAME>
14 works when one fixes the makefile
15
16 make depend needs the -osuf o removed.
17
18 CTypes also has a Subst-worker WARNING.
19
20
21 Notes June 99
22 ~~~~~~~~~~~~~
23 * In nofib/spectral/mandel2/Main.check_radius, there's a call to (fromIntegral m), where
24   m is defined at top level. The full-laziness pass doesn't catch this because by
25   the time it runs, enough inlining has happened that it looks like
26         case ccall ... of (# a,b #) -> ...
27   and the full laziness pass doesn't float unboxed things.
28
29 * The same function is an excellent example of where liberate-case would be a win.
30
31 * Don't forget to try CSE
32
33 Interface files
34 ~~~~~~~~~~~~~~~
35 * Don't need to pin a kind on the type variable in a interface class decl,
36   because it'll be correctly re-inferred when we read it in.
37
38 * The double semicolon at the end of an interface-file signature is so that
39   the lexer can run through the pragmas very fast when -O isn't being used.
40
41 * In export lists, T|(A,B) says that constructors A and B are exported, 
42   but not the type T.  Similarly for classes.  
43   We can't say T(T,A,B) and T(A,B) to export or not-export T respectively,
44   because the type T might have a constructor T.
45