Ticket #4928: arraycopy.dpatch

File arraycopy.dpatch, 85.6 KB (added by pumpkin, 2 years ago)
Line 
13 patches for repository http://darcs.haskell.org/ghc:
2
3Mon Jan 24 02:38:01 EST 2011  Daniel Peebles <pumpkingod@gmail.com>
4  * Add a copyArray# primop that uses memcpy behind the scenes
5
6Fri Jan 28 10:08:17 EST 2011  Daniel Peebles <pumpkingod@gmail.com>
7  * Additional copying primops (cloning is not yet complete, so those functions are only stubs) and adjustments to the card table for GC
8
9Tue Feb  1 01:28:16 EST 2011  Daniel Peebles <pumpkingod@gmail.com>
10  * Finish array copy/clone primops (with card copy that is often fast) and factor out some common code into macros
11
12
13New patches:
14
15[Add a copyArray# primop that uses memcpy behind the scenes
16Daniel Peebles <pumpkingod@gmail.com>**20110124073801
17 Ignore-this: e7c09a2faff23b6db0ba4d757de04a72
18] {
19hunk ./compiler/prelude/primops.txt.pp 621
20    out_of_line = True
21    has_side_effects = True
22 
23+primop  CopyArrayOp "copyArray#" GenPrimOp
24+  MutableArray# s a -> Int# -> MutableArray# s a -> Int# -> Int# -> State# s -> State# s
25+  {Copy a range of the first MutableArray# to the specified region in the second MutableArray#}
26+  with
27+  out_of_line = True
28+  has_side_effects = True
29+
30 ------------------------------------------------------------------------
31 section "Byte Arrays"
32        {Operations on {\tt ByteArray\#}. A {\tt ByteArray\#} is a just a region of
33hunk ./rts/PrimOps.cmm 215
34   }
35 }
36 
37+stg_copyArrayzh
38+{
39+  W_ bytes, n, src, dst, src_start, dst_start, src_start_ptr, dst_start_ptr;
40+
41+  src = R1;
42+  src_start = R2;
43+  dst = R3;
44+  dst_start = R4;
45+  n = R5;
46+  MAYBE_GC(R1_PTR & R3_PTR, stg_copyArrayzh);
47+
48+  bytes = WDS(n);
49+
50+  src_start_ptr = src + SIZEOF_StgMutArrPtrs + WDS(src_start);
51+  dst_start_ptr = dst + SIZEOF_StgMutArrPtrs + WDS(dst_start);
52+
53+  foreign "C" memcpy(dst_start_ptr "ptr", src_start_ptr "ptr", bytes);
54+
55+  jump %ENTRY_CODE(Sp(0));
56+}
57+
58 /* -----------------------------------------------------------------------------
59    MutVar primitives
60    -------------------------------------------------------------------------- */
61}
62[Additional copying primops (cloning is not yet complete, so those functions are only stubs) and adjustments to the card table for GC
63Daniel Peebles <pumpkingod@gmail.com>**20110128150817
64 Ignore-this: 124e6f11f57db4010110489a210d4460
65] {
66hunk ./compiler/prelude/primops.txt.pp 622
67    has_side_effects = True
68 
69 primop  CopyArrayOp "copyArray#" GenPrimOp
70+  Array# a -> Int# -> MutableArray# s a -> Int# -> Int# -> State# s -> State# s
71+  {Copy a range of the Array# to the specified region in the MutableArray#.
72+   Both arrays must fully contain the specified ranges, but this is not checked.
73+   The two arrays must not be the same array in different states, but this is not checked either.}
74+  with
75+  out_of_line = True
76+  has_side_effects = True
77+
78+primop  CopyMutableArrayOp "copyMutableArray#" GenPrimOp
79   MutableArray# s a -> Int# -> MutableArray# s a -> Int# -> Int# -> State# s -> State# s
80hunk ./compiler/prelude/primops.txt.pp 632
81-  {Copy a range of the first MutableArray# to the specified region in the second MutableArray#}
82+  {Copy a range of the first MutableArray# to the specified region in the second MutableArray#.
83+   Both arrays must fully contain the specified ranges, but this is not checked.}
84+  with
85+  out_of_line = True
86+  has_side_effects = True
87+
88+primop  CloneArrayOp "cloneArray#" GenPrimOp
89+  Array# a -> Int# -> Int# -> State# s -> (# State# s, Array# a #)
90+  {Return a newly allocated Array# with the specified subrange of the provided Array#.
91+   The provided Array# should contain the full subrange specified by the two Int#s, but this is not checked.}
92+  with
93+  out_of_line = True
94+  has_side_effects = True
95+
96+primop  CloneMutableArrayOp "cloneMutableArray#" GenPrimOp
97+  MutableArray# s a -> Int# -> Int# -> State# s -> (# State# s, MutableArray# s a #)
98+  {Return a newly allocated Array# with the specified subrange of the provided Array#.
99+   The provided MutableArray# should contain the full subrange specified by the two Int#s, but this is not checked.}
100+  with
101+  out_of_line = True
102+  has_side_effects = True
103+
104+primop  FreezeArrayOp "freezeArray#" GenPrimOp
105+  MutableArray# s a -> Int# -> Int# -> State# s -> (# State# s, Array# a #)
106+  {Return a newly allocated Array# with the specified subrange of the provided MutableArray#.
107+   The provided MutableArray# should contain the full subrange specified by the two Int#s, but this is not checked.}
108+  with
109+  out_of_line = True
110+  has_side_effects = True
111+
112+primop  ThawArrayOp "thawArray#" GenPrimOp
113+  Array# a -> Int# -> Int# -> State# s -> (# State# s, MutableArray# s a #)
114+  {Return a newly allocated Array# with the specified subrange of the provided MutableArray#.
115+   The provided Array# should contain the full subrange specified by the two Int#s, but this is not checked.}
116   with
117   out_of_line = True
118   has_side_effects = True
119hunk ./includes/stg/MiscClosures.h 383
120 RTS_FUN_DECL(stg_newPinnedByteArrayzh);
121 RTS_FUN_DECL(stg_newAlignedPinnedByteArrayzh);
122 RTS_FUN_DECL(stg_newArrayzh);
123+RTS_FUN_DECL(stg_copyArrayzh);
124+RTS_FUN_DECL(stg_copyMutableArrayzh);
125+RTS_FUN_DECL(stg_cloneArrayzh);
126+RTS_FUN_DECL(stg_cloneMutableArrayzh);
127+RTS_FUN_DECL(stg_freezzeArrayzh);
128+RTS_FUN_DECL(stg_thawArrayzh);
129 
130 RTS_FUN_DECL(stg_newMutVarzh);
131 RTS_FUN_DECL(stg_atomicModifyMutVarzh);
132hunk ./rts/Linker.c 824
133       SymI_HasProto(stg_myThreadIdzh)                   \
134       SymI_HasProto(stg_labelThreadzh)                  \
135       SymI_HasProto(stg_newArrayzh)                     \
136+      SymI_HasProto(stg_copyArrayzh)                    \
137+      SymI_HasProto(stg_copyMutableArrayzh)             \
138+      SymI_HasProto(stg_cloneArrayzh)                   \
139+      SymI_HasProto(stg_cloneMutableArrayzh)            \
140+      SymI_HasProto(stg_freezzeArrayzh)                 \
141+      SymI_HasProto(stg_thawArrayzh)                    \
142       SymI_HasProto(stg_newBCOzh)                       \
143       SymI_HasProto(stg_newByteArrayzh)                 \
144       SymI_HasProto_redirect(newCAF, newDynCAF)         \
145hunk ./rts/PrimOps.cmm 218
146 stg_copyArrayzh
147 {
148   W_ bytes, n, src, dst, src_start, dst_start, src_start_ptr, dst_start_ptr;
149+  W_ src_cards_start, dst_cards_start, src_start_card, dst_start_card, bytes_card;
150 
151   src = R1;
152   src_start = R2;
153hunk ./rts/PrimOps.cmm 232
154   src_start_ptr = src + SIZEOF_StgMutArrPtrs + WDS(src_start);
155   dst_start_ptr = dst + SIZEOF_StgMutArrPtrs + WDS(dst_start);
156 
157+  src_cards_start = src + SIZEOF_StgMutArrPtrs + WDS(StgMutArrPtrs_ptrs(src));
158+  dst_cards_start = dst + SIZEOF_StgMutArrPtrs + WDS(StgMutArrPtrs_ptrs(dst));
159+
160+  src_start_card = mutArrPtrsCardWords(src_start);
161+  dst_start_card = mutArrPtrsCardWords(dst_start);
162+  bytes_card = WDS(mutArrPtrsCardWords(n));
163+
164+  // Copy data (we assume the arrays aren't overlapping since they're of different types)
165   foreign "C" memcpy(dst_start_ptr "ptr", src_start_ptr "ptr", bytes);
166 
167hunk ./rts/PrimOps.cmm 242
168+  // Copy cards
169+  foreign "C" memcpy(dst_cards_start + WDS(dst_start_card), src_cards_start + WDS(src_start_card), bytes_card);
170+
171+  // Adjust boundary cards (see below)
172+  W_[dst_cards_start + WDS(mutArrPtrsCardWords(dst_start & (~ ((1 << MUT_ARR_PTRS_CARD_BITS) - 1))))] = 1;
173+  W_[dst_cards_start + WDS(dst_start_card) + bytes_card] = 1;
174+
175   jump %ENTRY_CODE(Sp(0));
176 }
177 
178hunk ./rts/PrimOps.cmm 252
179+stg_copyMutableArrayzh
180+{
181+  W_ bytes, n, src, dst, src_start, dst_start, src_start_ptr, dst_start_ptr;
182+  W_ src_cards_start, dst_cards_start, src_start_card, dst_start_card, bytes_card;
183+
184+  src = R1;
185+  src_start = R2;
186+  dst = R3;
187+  dst_start = R4;
188+  n = R5;
189+  MAYBE_GC(R1_PTR & R3_PTR, stg_copyMutableArrayzh);
190+
191+  bytes = WDS(n);
192+
193+  src_start_ptr = src + SIZEOF_StgMutArrPtrs + WDS(src_start);
194+  dst_start_ptr = dst + SIZEOF_StgMutArrPtrs + WDS(dst_start);
195+
196+  src_cards_start = src + SIZEOF_StgMutArrPtrs + WDS(StgMutArrPtrs_ptrs(src));
197+  dst_cards_start = dst + SIZEOF_StgMutArrPtrs + WDS(StgMutArrPtrs_ptrs(dst));
198+
199+  src_start_card = mutArrPtrsCardWords(src_start);
200+  dst_start_card = mutArrPtrsCardWords(dst_start);
201+  bytes_card = WDS(mutArrPtrsCardWords(n));
202+
203+  // The only time the memory might overlap is when the two arrays we were provided are the same array!
204+  if (src == dst) {
205+    // Move possibly overlapping regions around
206+    foreign "C" memmove(dst_start_ptr "ptr", src_start_ptr "ptr", bytes);
207+
208+    // Move relevant cards
209+    foreign "C" memmove(dst_cards_start + WDS(dst_start_card), src_cards_start + WDS(src_start_card), bytes_card);
210+
211+    // For safety around the edges of the card move (since we round), mark the boundary cards as having changed
212+    //
213+    // Example of the "round down" behavior:
214+    // (assuming MUT_ARR_PTRS_CARD_BITS = 7)
215+    // 127 & (~ ((1 << MUT_ARR_PTRS_CARD_BITS) - 1)) = 0
216+    // 128 & (~ ((1 << MUT_ARR_PTRS_CARD_BITS) - 1)) = 128
217+    // 1029 & (~ ((1 << MUT_ARR_PTRS_CARD_BITS) - 1)) = 1024
218+    W_[dst_cards_start + WDS(mutArrPtrsCardWords(dst_start & (~ ((1 << MUT_ARR_PTRS_CARD_BITS) - 1))))] = 1;
219+    W_[dst_cards_start + WDS(dst_start_card) + bytes_card] = 1;
220+  } else {
221+    foreign "C" memcpy(dst_start_ptr "ptr", src_start_ptr "ptr", bytes);
222+
223+    foreign "C" memcpy(dst_cards_start + WDS(dst_start_card), src_cards_start + WDS(src_start_card), bytes_card);
224+
225+    W_[dst_cards_start + WDS(mutArrPtrsCardWords(dst_start & (~ ((1 << MUT_ARR_PTRS_CARD_BITS) - 1))))] = 1;
226+    W_[dst_cards_start + WDS(dst_start_card) + bytes_card] = 1;
227+  }
228+
229+  jump %ENTRY_CODE(Sp(0));
230+}
231+
232+stg_cloneArrayzh
233+{
234+  // Not done yet
235+}
236+
237+stg_cloneMutableArrayzh
238+{
239+  // Not done yet
240+}
241+
242+stg_freezzeArrayzh
243+{
244+  // Not done yet
245+}
246+
247+stg_thawArrayzh
248+{
249+  // Not done yet
250+}
251+
252 /* -----------------------------------------------------------------------------
253    MutVar primitives
254    -------------------------------------------------------------------------- */
255}
256[Finish array copy/clone primops (with card copy that is often fast) and factor out some common code into macros
257Daniel Peebles <pumpkingod@gmail.com>**20110201062816
258 Ignore-this: 515ca98038666b5f37f50446ef925d90
259] {
260hunk ./includes/Cmm.h 467
261 #define StgFunInfoExtra_bitmap(i)     StgFunInfoExtraFwd_bitmap(i)
262 #endif
263 
264+#define mutArrCardMask ((1 << MUT_ARR_PTRS_CARD_BITS) - 1)
265+#define mutArrPtrToCard(i) ((i) >> MUT_ARR_PTRS_CARD_BITS)
266 #define mutArrPtrsCardWords(n) \
267hunk ./includes/Cmm.h 470
268-    ROUNDUP_BYTES_TO_WDS(((n) + (1 << MUT_ARR_PTRS_CARD_BITS) - 1) >> MUT_ARR_PTRS_CARD_BITS)
269+    ROUNDUP_BYTES_TO_WDS(((n) + mutArrCardMask) >> MUT_ARR_PTRS_CARD_BITS)
270 
271 #if defined(PROFILING) || (!defined(THREADED_RTS) && defined(DEBUG))
272 #define OVERWRITING_CLOSURE(c) foreign "C" overwritingClosure(c "ptr")
273hunk ./rts/PrimOps.cmm 215
274   }
275 }
276 
277+#define COPY_CARDS(src_start, src_cards_start, dst_start, dst_cards_start, n, copy) \
278+  if (src_start & mutArrCardMask == dst_start & mutArrCardMask) { \
279+    foreign "C" copy(dst_cards_start + mutArrPtrsCardWords(dst_start), src_cards_start + mutArrPtrToCard(src_start), mutArrPtrToCard(n)); \
280+    \
281+    I8[dst_cards_start + mutArrPtrToCard(dst_start)] = I8[dst_cards_start + mutArrPtrToCard(dst_start)] | I8[src_cards_start + mutArrPtrToCard(src_start)]; \
282+    I8[dst_cards_start + mutArrPtrsCardWords(n)] = I8[dst_cards_start + mutArrPtrsCardWords(dst_start + n)] | I8[src_cards_start + mutArrPtrsCardWords(src_start + n)]; \
283+  } else { \
284+    foreign "C" memset(dst_cards_start "ptr", 1, WDS(mutArrPtrsCardWords(n))); \
285+  }
286+
287 stg_copyArrayzh
288 {
289   W_ bytes, n, src, dst, src_start, dst_start, src_start_ptr, dst_start_ptr;
290hunk ./rts/PrimOps.cmm 228
291-  W_ src_cards_start, dst_cards_start, src_start_card, dst_start_card, bytes_card;
292+  W_ src_cards_start, dst_cards_start;
293 
294   src = R1;
295   src_start = R2;
296hunk ./rts/PrimOps.cmm 242
297   src_start_ptr = src + SIZEOF_StgMutArrPtrs + WDS(src_start);
298   dst_start_ptr = dst + SIZEOF_StgMutArrPtrs + WDS(dst_start);
299 
300-  src_cards_start = src + SIZEOF_StgMutArrPtrs + WDS(StgMutArrPtrs_ptrs(src));
301-  dst_cards_start = dst + SIZEOF_StgMutArrPtrs + WDS(StgMutArrPtrs_ptrs(dst));
302-
303-  src_start_card = mutArrPtrsCardWords(src_start);
304-  dst_start_card = mutArrPtrsCardWords(dst_start);
305-  bytes_card = WDS(mutArrPtrsCardWords(n));
306-
307   // Copy data (we assume the arrays aren't overlapping since they're of different types)
308   foreign "C" memcpy(dst_start_ptr "ptr", src_start_ptr "ptr", bytes);
309 
310hunk ./rts/PrimOps.cmm 245
311-  // Copy cards
312-  foreign "C" memcpy(dst_cards_start + WDS(dst_start_card), src_cards_start + WDS(src_start_card), bytes_card);
313+  // The base address of both source and destination card tables
314+  src_cards_start = src + SIZEOF_StgMutArrPtrs + WDS(StgMutArrPtrs_ptrs(src));
315+  dst_cards_start = dst + SIZEOF_StgMutArrPtrs + WDS(StgMutArrPtrs_ptrs(dst));
316 
317hunk ./rts/PrimOps.cmm 249
318-  // Adjust boundary cards (see below)
319-  W_[dst_cards_start + WDS(mutArrPtrsCardWords(dst_start & (~ ((1 << MUT_ARR_PTRS_CARD_BITS) - 1))))] = 1;
320-  W_[dst_cards_start + WDS(dst_start_card) + bytes_card] = 1;
321+  COPY_CARDS(src_start, src_cards_start, dst_start, dst_cards_start, n, memcpy);
322 
323   jump %ENTRY_CODE(Sp(0));
324 }
325hunk ./rts/PrimOps.cmm 257
326 stg_copyMutableArrayzh
327 {
328   W_ bytes, n, src, dst, src_start, dst_start, src_start_ptr, dst_start_ptr;
329-  W_ src_cards_start, dst_cards_start, src_start_card, dst_start_card, bytes_card;
330+  W_ src_cards_start, dst_cards_start;
331 
332   src = R1;
333   src_start = R2;
334hunk ./rts/PrimOps.cmm 274
335   src_cards_start = src + SIZEOF_StgMutArrPtrs + WDS(StgMutArrPtrs_ptrs(src));
336   dst_cards_start = dst + SIZEOF_StgMutArrPtrs + WDS(StgMutArrPtrs_ptrs(dst));
337 
338-  src_start_card = mutArrPtrsCardWords(src_start);
339-  dst_start_card = mutArrPtrsCardWords(dst_start);
340-  bytes_card = WDS(mutArrPtrsCardWords(n));
341-
342   // The only time the memory might overlap is when the two arrays we were provided are the same array!
343   if (src == dst) {
344hunk ./rts/PrimOps.cmm 276
345-    // Move possibly overlapping regions around
346-    foreign "C" memmove(dst_start_ptr "ptr", src_start_ptr "ptr", bytes);
347-
348-    // Move relevant cards
349-    foreign "C" memmove(dst_cards_start + WDS(dst_start_card), src_cards_start + WDS(src_start_card), bytes_card);
350-
351-    // For safety around the edges of the card move (since we round), mark the boundary cards as having changed
352-    //
353-    // Example of the "round down" behavior:
354-    // (assuming MUT_ARR_PTRS_CARD_BITS = 7)
355-    // 127 & (~ ((1 << MUT_ARR_PTRS_CARD_BITS) - 1)) = 0
356-    // 128 & (~ ((1 << MUT_ARR_PTRS_CARD_BITS) - 1)) = 128
357-    // 1029 & (~ ((1 << MUT_ARR_PTRS_CARD_BITS) - 1)) = 1024
358-    W_[dst_cards_start + WDS(mutArrPtrsCardWords(dst_start & (~ ((1 << MUT_ARR_PTRS_CARD_BITS) - 1))))] = 1;
359-    W_[dst_cards_start + WDS(dst_start_card) + bytes_card] = 1;
360+    COPY_CARDS(src_start, src_cards_start, dst_start, dst_cards_start, n, memmove);
361   } else {
362hunk ./rts/PrimOps.cmm 278
363-    foreign "C" memcpy(dst_start_ptr "ptr", src_start_ptr "ptr", bytes);
364-
365-    foreign "C" memcpy(dst_cards_start + WDS(dst_start_card), src_cards_start + WDS(src_start_card), bytes_card);
366-
367-    W_[dst_cards_start + WDS(mutArrPtrsCardWords(dst_start & (~ ((1 << MUT_ARR_PTRS_CARD_BITS) - 1))))] = 1;
368-    W_[dst_cards_start + WDS(dst_start_card) + bytes_card] = 1;
369+    COPY_CARDS(src_start, src_cards_start, dst_start, dst_cards_start, n, memcpy);
370   }
371 
372   jump %ENTRY_CODE(Sp(0));
373hunk ./rts/PrimOps.cmm 284
374 }
375 
376-stg_cloneArrayzh
377-{
378-  // Not done yet
379-}
380-
381-stg_cloneMutableArrayzh
382-{
383-  // Not done yet
384-}
385+#define ARRAY_CLONE(name) \
386+  name \
387+  { \
388+    W_ src, src_off, words, n, init, arr, src_p, dst_p, size, dst_cards, src_cards; \
389+    \
390+    src = R1; \
391+    src_off = R2; \
392+    n = R3; \
393+    \
394+    MAYBE_GC(R1_PTR, name); \
395+    \
396+    size = n + mutArrPtrsCardWords(n); \
397+    words = BYTES_TO_WDS(SIZEOF_StgMutArrPtrs) + size; \
398+    ("ptr" arr) = foreign "C" allocate(MyCapability() "ptr", words) [R2]; \
399+    TICK_ALLOC_PRIM(SIZEOF_StgMutArrPtrs, WDS(n), 0); \
400+    \
401+    SET_HDR(arr, stg_MUT_ARR_PTRS_DIRTY_info, W_[CCCS]); \
402+    StgMutArrPtrs_ptrs(arr) = n; \
403+    StgMutArrPtrs_size(arr) = size; \
404+    \
405+    dst_p = arr + SIZEOF_StgMutArrPtrs; \
406+    src_p = src + SIZEOF_StgMutArrPtrs + WDS(src_off); \
407+    \
408+    foreign "C" memcpy(dst_p "ptr", src_p "ptr", WDS(n)); \
409+    \
410+    dst_cards = dst_p + WDS(n); \
411+    src_cards = src + SIZEOF_StgMutArrPtrs + WDS(StgMutArrPtrs_ptrs(src)); \
412+    \
413+    if (src_off & mutArrCardMask == 0) { \
414+      foreign "C" memcpy(dst_cards, src_cards, WDS(mutArrPtrsCardWords(n))); \
415+    } else { \
416+      foreign "C" memset(dst_cards, 1, WDS(mutArrPtrsCardWords(n))); \
417+    } \
418+  }
419 
420hunk ./rts/PrimOps.cmm 319
421-stg_freezzeArrayzh
422-{
423-  // Not done yet
424-}
425+ARRAY_CLONE(stg_cloneArrayzh)
426+ARRAY_CLONE(stg_cloneMutableArrayzh)
427+ARRAY_CLONE(stg_freezzeArrayzh)
428+ARRAY_CLONE(stg_thawArrayzh)
429 
430hunk ./rts/PrimOps.cmm 324
431-stg_thawArrayzh
432-{
433-  // Not done yet
434-}
435 
436 /* -----------------------------------------------------------------------------
437    MutVar primitives
438}
439
440Context:
441
442[Fix "make 1" etc following the build system changes
443Ian Lynagh <igloo@earth.li>**20110127001739
444 Ignore-this: 7ae0a41f2753d7740569f362a97ea5fb
445 The logic is now in mk/compiler-ghc.mk rather than being duplicated in
446 ghc/Makefile and compiler/Makefile.
447]
448[Fix vectorisation of recursive types
449Roman Leshchinskiy <rl@cse.unsw.edu.au>**20110126231843
450 Ignore-this: 983fc42a659be2e085da9b16f994aa2e
451]
452[Fix dependencies among specialisations for imported Ids
453simonpj@microsoft.com**20110126172112
454 Ignore-this: 364e09c11affe7bfe8f1b934ea28bbb6
455 
456 This was a subtle one (Trac #4903).  See
457   Note [Glom the bindings if imported functions are specialised]
458 in Speclialise.
459 
460 Fundamentally, a specialised binding for an imported Id was being
461 declared non-recursive, whereas in fact it can become recursive
462 via a RULE.  Once it's specified non-recurive the OccAnal pass
463 treats that as gospel -- and that in turn led to infinite inlining.
464 
465 Easily fixed by glomming all the specialised bindings in a Rec;
466 now the OccAnal will sort them out correctly.
467]
468[Fix bug in roughTopNames
469simonpj@microsoft.com**20110126171803
470 Ignore-this: eca8b144162f1bd94e2ccb433bca1e02
471 
472 roughTopNames was returning a name that in fact might be
473 "looked though" by the rule matcher. Result: a rule
474 that should match was being pre-emptively discarded.
475 
476 See Note [Care with roughTopName].
477 
478 Fixes a bug noticed by Pedro (Trac #4918).
479]
480[Comments only, plus a tiny bit of debug printing
481simonpj@microsoft.com**20110126171255
482 Ignore-this: f84364b2b90fc860e9289dd40d0395ac
483]
484[Comments only
485simonpj@microsoft.com**20110126171235
486 Ignore-this: 79059977f82aaac7f9714ad09e820ea9
487]
488[Look through type synonyms when computing orphans
489simonpj@microsoft.com**20110126171229
490 Ignore-this: 6dfc45dae3a94cdb0022b2d21d6e09f6
491 
492 I renamed functions tyClsNamesOfTypes to oprhNamesOfType,
493 because it's only used in that capacity, and we therefore
494 want to look through type synonyms.  Similarly exprOrphNames.
495 
496 This fixes Trac #4912.
497]
498[Bleat a bit more informatively in unionLists
499simonpj@microsoft.com**20110126171030
500 Ignore-this: 80b276aa3d7971c6d7802b5f6b522d2e
501]
502[Keep separate linker flags, for when we want to link with gcc or ld
503Ian Lynagh <igloo@earth.li>**20110124233121]
504[Fix validate on OS X 64
505Ian Lynagh <igloo@earth.li>**20110124183618]
506[Split main/GHC into GHC and GhcMake
507simonpj@microsoft.com**20110125161632
508 Ignore-this: 502ea034de77ecd81173161836d78287
509 
510 There are two things going on in main/GHC.hs.
511   * It's the root module of the GHC package
512   * It contains lots of stuff for --make
513 It is also gigantic (2.7k lines)
514 
515 This patch splits it into two
516   * GHC.hs is the root module for the GHC package
517       (1.3k lines)
518   * GhcMake.hs contains the stuff for --make
519       (1.4k lines)
520 
521 Happily the functional split divided it almost
522 exactly in half.
523 
524 This is a pure refactoring.  There should be no
525 behavioural change.
526]
527[Comments only
528simonpj@microsoft.com**20110125131115
529 Ignore-this: 7ec4e97a481d06894de940aba59c575d
530]
531[Fix Trac #3717 by making exprOkForSpeculation a bit cleverer
532simonpj@microsoft.com**20110125110525
533 Ignore-this: 13b606b05da69c29bf53aaf408fd602
534 
535 The main change here is to do with dropping redundant seqs.
536 See Note [exprOkForSpeculation: case expressions] in CoreUtils.
537]
538[Improve dataToTag# magic
539simonpj@microsoft.com**20110125110418
540 Ignore-this: 11fdb265e030dec4d5b13ed6b16c9761
541 
542 dataToTag# is a bit unsatisfactory because it requires
543 its argument to be evaluated, and we don't have a good
544 way to enforce that. This patch adds some comments, and
545 makes exprOkForSpeculation a bit less picky in the case
546 of dataToTag# (since the argument may, in fact, not be
547 eval'd).
548]
549[Fix Trac #4917: try a bit harder to unify on-the-fly
550simonpj@microsoft.com**20110125110112
551 Ignore-this: e96e0a19ab8517d4ba648efe91f6b379
552 
553 This is generally a modest improvement but, more important,
554 it fixes a "unify-under-forall" problem.  See Note [Avoid deferring].
555 
556 There's still a lurking unsatisfactory-ness in that we can't
557 defer arbitrary constraints that are trapped under a forall.
558]
559[DPH options updated
560Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20110124043617
561 Ignore-this: 6b7d2949b75f9c923f279c1178d2d042
562 - '-Odph' is now '-O2 -fsimplifier-phases=3 -fsimplifier-iterations=20'
563 - The new option '-fdph-none' is the default; it indicates that no DPH
564   backend is selected and is the only valid option if the DPH libraries
565   are not installed.  If vectorisation is attempted with -fdph-none a
566   suitable error message is generated.
567 - Hence, '-fdph-par' (or '-fdph-seq') needs to be explicitly selected
568   when using vectorisation and when linking vectorised code.  (There
569   seems to be no elegant way to avoid that.)
570]
571[Add build system profiling to build system
572Ian Lynagh <igloo@earth.li>**20110123151408
573 Ignore-this: 75717810be32d60323980f9fd1baa853
574]
575[Fix ghci in stage3
576Ian Lynagh <igloo@earth.li>**20110123120232]
577[Remove use of non-existent $$(dir) variable in the rts ghc.mk
578Ian Lynagh <igloo@earth.li>**20110123021815]
579[Add some missing dependencies
580Ian Lynagh <igloo@earth.li>**20110123004208]
581[Tweak some deps to avoid multiple $(wildcard ...)s
582Ian Lynagh <igloo@earth.li>**20110123001045
583 Ignore-this: 38e53cb6f6b4f27c771ae0ed341f8958
584 Note that some things depending on the rts/includes header files now
585 depend on more files: They used to include depend on includes/*.h, but
586 now they also depend on header files in subdirectories. As far as I can
587 see this was a bug.
588]
589[Use := when assigning the result of $(wildcard ...)
590Ian Lynagh <igloo@earth.li>**20110122224532
591 Ignore-this: 67e2ca2ffbcffb5b7f55bd60c17fc6cf
592 Avoids repeated evaluations of things that need system calls etc
593]
594[Simplify the build system, and remove 2 phases
595Ian Lynagh <igloo@earth.li>**20110122190928
596 Ignore-this: 7b6184088befcbc44ea47b2f4abf85a9
597 From
598     http://hackage.haskell.org/trac/ghc/wiki/Building/Architecture/Idiom/PhaseOrdering
599 
600 Phase 0:
601     Includes: package-data.mk files for things built by the
602               bootstrapping compiler.
603     Builds:   the dependency files for hsc2hs and genprimopcode. We need
604               to do this now, as hsc2hs needs to be buildable in phase 1's
605               includes (so that we can make the hpc library's .hs source
606               files, which in turn is necessary for making its dependency
607               files), and genprimopcode needs to be buildable in phase 1's
608               includes (so that we can make the primop-*.hs-incl files,
609               which are sources for the stage1 compiler library, and thus
610               necessary for making its dependency files).
611 Phase 1:
612     Includes: dependency files for things built by the bootstrapping
613               compiler.
614     Builds:   package-data.mk files for everything else. Note that this
615               requires configuring the packages, which means telling cabal
616               which ghc to use, and thus the stage1 compiler gets built
617               during this phase.
618 Phase "":
619     Includes: dependency files for everything else.
620     Builds:   Everything else.
621]
622[Manually control more of the Cabal flags for the compiler and ghc packages
623Ian Lynagh <igloo@earth.li>**20110121230552
624 Ignore-this: 652b5f6327d246d7e2e47acbca614df2
625 For some reason the Windows HEAD builder has started thinking the ghci
626 flag should be on in stage 1. This should fix it, and generally make
627 things a little more resilient.
628]
629[Remove some hardcoded makefile settings
630Ian Lynagh <igloo@earth.li>**20110121230245
631 Ignore-this: 6b1b68aebdfbe02c15518985d2ea7559
632 Now that we used cabal to configure the ghc-bin package they are no
633 longer needed.
634]
635[tweak newArray# documentation again
636Simon Marlow <marlowsd@gmail.com>**20110119140633
637 Ignore-this: ceee33428dbad7e0f5eabfa0a2590466
638]
639[Fix OSTYPE test
640Ian Lynagh <igloo@earth.li>**20110120000308
641 Ignore-this: 8fa5d5c03297cb507a166bd85675145c
642]
643[Comments only
644simonpj@microsoft.com**20110119222247
645 Ignore-this: ea531428e9093ecedb895735ed537791
646]
647[Add OSTYPE build-system variable, and use it
648simonpj@microsoft.com**20110113155023
649 Ignore-this: c4a75f0bb27a680924e57ca7075ec116
650 
651 The use is in install.mk.in, where we need to know when
652 we're on Cygwin.
653 
654 This fixes the build on my Windows box, where I have
655 both Msys and Cygwin.
656]
657[Remove an extraneous comma that stopped ghc-cabal from building
658Ian Lynagh <igloo@earth.li>**20110119222359]
659[Move some make variables around
660Ian Lynagh <igloo@earth.li>**20110119221545
661 Ignore-this: c57c93f39d72c3baef7c5f466861dd5b
662]
663[Remove a debugging 'info'
664Ian Lynagh <igloo@earth.li>**20110119203305
665 Ignore-this: ea912ba205eaae1d2bcf0cce7c13628d
666]
667[Move the PACKAGE_MAGIC evaluation inside package-data.mk
668Ian Lynagh <igloo@earth.li>**20110119203229
669 Ignore-this: 497c4e83ae75089c24d6c794c4e2891f
670]
671[Fix libraries/index.html's haddock dependency on Windows
672Ian Lynagh <igloo@earth.li>**20110119172310]
673[Add configure phases for the stage 3 compiler
674Ian Lynagh <igloo@earth.li>**20110119130629]
675[Include kfreebsdgnu in the list of Target Platforms.
676Marco Silva <marcot@marcot.eti.br>**20110118222352
677 Ignore-this: 759482baf33903b98cd837636a3f5328
678]
679[Fix documentation bug: newArray# accepts word count, not byte count.
680Edward Z. Yang <ezyang@mit.edu>**20110118221834
681 Ignore-this: 8daab134bf72a740b89d273fb4e983d5
682]
683[Update the location of libffi.dll.a
684Ian Lynagh <igloo@earth.li>**20110118164225
685 As far as I can see this has been wrong for some time, but only bit
686 recently.
687]
688[Update the generics docs; pointed out by Christian Maeder
689Ian Lynagh <igloo@earth.li>**20110117214632]
690[ghc-cabal now adds the language flag being used
691Ian Lynagh <igloo@earth.li>**20110117184833
692 Ignore-this: 8198892ef7f8009561d3181425cde942
693 This means we get -XHaskell98 added to the list of flags, just like we
694 would if we were building with Cabal.
695]
696[Reinstate the OS X flags in the LDFLAGS etc variables
697Ian Lynagh <igloo@earth.li>**20110117200540
698 Ignore-this: 9261baa1843100f65b02fb91c1a0d225
699 I expect this will fix:
700 http://www.haskell.org/pipermail/cvs-ghc/2011-January/059098.html
701]
702[Add NondecreasingIndentation extension to ghc-bin
703Ian Lynagh <igloo@earth.li>**20110117200427
704 Ignore-this: b6b029ee6dfbda482c91d17e835f9000
705]
706[Change an "if ... else return ()" into a "when"
707Ian Lynagh <igloo@earth.li>**20110117191714
708 Ignore-this: 7de58b728e4fce7f86d7d24a3089e6c7
709]
710[Add NondecreasingIndentation to the list of extensions in ghc-pkg
711Ian Lynagh <igloo@earth.li>**20110117190610
712 Ignore-this: 20ce8144b7b64d1f67de2f6983717da3
713]
714[Add NondecreasingIndentation to the list of extensions in the ghc package
715Ian Lynagh <igloo@earth.li>**20110117190404
716 Ignore-this: 516b45e93c1b3bbb66da5414d9aabef1
717]
718[Fix deps on the ghc package
719Ian Lynagh <igloo@earth.li>**20110117173010
720 The standard libraries/$depname scheme doesn't apply, so we need to
721 handle it specially.
722]
723[Tidy up gmp cleaning
724Ian Lynagh <igloo@earth.li>**20110117121155
725 Ignore-this: 61d9a57d14b70732f62d6b2c8d6d197a
726]
727[Remove redundant libraries/cabal-bin.hs
728Ian Lynagh <igloo@earth.li>**20110116194919
729 Ignore-this: 13b4a8d26fa06ec952351603c3bb40ee
730]
731[Turn off dtrace unless you override USE_DTRACE
732Ian Lynagh <igloo@earth.li>**20110116180306
733 Ignore-this: beafc2002091fa7f0e66666004c870a5
734 There are problems with dtrace on 64bit 10.5. For now at least, we
735 just turn dtrace off unless you override USE_DTRACE
736]
737[Simplify a bit of makefile
738Ian Lynagh <igloo@earth.li>**20110116175218
739 Ignore-this: 18f02e40e36eca2e2cab79c152c72541
740]
741[Tweak Windows phase ordering
742Ian Lynagh <igloo@earth.li>**20110116173459
743 Ignore-this: bb8a70741be4574edc149349acd0f4be
744]
745[Handle dependencies of programs on libraries correctly
746Ian Lynagh <igloo@earth.li>**20110116155627]
747[It's not clear if LDFLAGS flags will be given to gcc or ld,
748Ian Lynagh <igloo@earth.li>**20110116151230
749 Ignore-this: a6a2d0b1f550c922c32f6f252e4e3285
750 and they accept different flags, so for now do nothing
751]
752[Fix cross-package dependency generation on Windows
753Ian Lynagh <igloo@earth.li>**20110116150901
754 Ignore-this: f78baaa7074ca36a6a4ff8a7e6f2e35
755]
756[Add some Windows-only CONFIGURE_PHASEs
757Ian Lynagh <igloo@earth.li>**20110116150826
758 Ignore-this: abf1bf498609107eb206b22d483613de
759]
760[Simplify, and future-proof, a dependency in the build system
761Ian Lynagh <igloo@earth.li>**20110116020035
762 Ignore-this: d089133430828d041b3601b1e9c8b22a
763]
764[Remove an unnecessary phase, and some unnecessary deps
765Ian Lynagh <igloo@earth.li>**20110116015943
766 Ignore-this: e649b072d006db5db97aee26d3753f65
767 now that cross-package deps are tracked correctly.
768]
769[We can now pass -include-pkg-deps to the bootstrapping compiler
770Ian Lynagh <igloo@earth.li>**20110116015714
771 Ignore-this: bdfed941124bb93111f117800be5f2d8
772]
773[Remove some flags that are redundant now GHC gets configured by Cabal
774Ian Lynagh <igloo@earth.li>**20110116003154
775 Ignore-this: 43a023c5103b72c91d53cf3bed7a4c50
776]
777[Change some HC_OPTS var handling
778Ian Lynagh <igloo@earth.li>**20110116003104
779 Ignore-this: 629f4a3d37028f71a477c22ed4e8591e
780 In particular, this means ghc gets built with -rtsopt, -threaded, etc again.
781]
782[Remove some unnecessary workarounds
783Ian Lynagh <igloo@earth.li>**20110116002803
784 Ignore-this: 5ecc62f765522c08c44aa0814c5b840e
785 We can now rely on cross-package deps working properly, as we require
786 GHC 6.12.
787]
788[Tidy up a bit
789Ian Lynagh <igloo@earth.li>**20110116001121
790 Ignore-this: a2baabc6da0cf2877507b7833d5b0fc7
791]
792[Build system improvements
793Ian Lynagh <igloo@earth.li>**20110115231927
794 Ignore-this: 92ea6514addc8aa8734d7e0eb61b50cb
795 We no longer use dummy-ghc; instead we don't configure most packages
796 until the stage1 compiler is available.
797   
798 We also now use Cabal for building the ghc-bin package.
799 
800 There are a couple more sanity checks too.
801]
802[Whitespace tweak
803Ian Lynagh <igloo@earth.li>**20110115214149
804 Ignore-this: 3e564566f311be473e94f6af609bdeaa
805]
806[Fix libffi build rules
807Ian Lynagh <igloo@earth.li>**20110115202104
808 Ignore-this: 57e1763d2079301b0165be7deba29c85
809 Fixes a rare race when both libHSffi.a and libHSffi_p.a were being built
810 at the same time:
811 
812 "cp" libffi/dist-install/build/libffi.a libffi/dist-install/build/libHSffi.a
813 "cp" libffi/dist-install/build/libffi.a libffi/dist-install/build/libHSffi.a
814 "cp" libffi/dist-install/build/libffi.so libffi/dist-install/build/libHSffi-ghc7.1.20110115.so
815 cp: cannot create regular file `libffi/dist-install/build/libHSffi.a': File exists
816]
817[Fix Trac #4874: specialisation of INLINABLE things
818simonpj@microsoft.com**20110114163227
819 Ignore-this: b90543117ebddaf3bbeeaf0af0c18699
820 
821 Johan discovered that when INLINABLE things are specialised
822 bad things can happen. This patch implements a hack -- but
823 it's a simple hack and it solves the problem.
824 
825 See Note [Inline specialisations].
826 
827 The hack part is that really INLINABLE should not cause *any* loss
828 optimisation, and it does; see Note [Don't w/w INLINABLE things] in
829 WorkWrap.
830]
831[Comments only
832simonpj@microsoft.com**20110114162959
833 Ignore-this: f76d4d8f527c3fcd2598ec8cc5fd3049
834]
835[Fix a buglet in postInlineUnconditionally
836simonpj@microsoft.com**20110114162927
837 Ignore-this: 7a7b8610ef863907843d4ae36a8a1a3c
838 
839 Under obscure circumstances (actually only shown up when fixing something
840 else) it was possible for a variable binding to be discarded although
841 it was still used.  See Note [Top level and postInlineUnconditionally]
842]
843[cope with empty libraries/stamp directory (in git repo)
844Simon Marlow <marlowsd@gmail.com>**20110114142406
845 Ignore-this: 6e95c44368d784f86a0c1c1d1e24d810
846]
847[add .gitignore
848Simon Marlow <marlowsd@gmail.com>**20110114142353
849 Ignore-this: 23d7cabd2b04eedfe4c33ad94a120474
850]
851[Fix longstanding bug in C-- inlining for functions calls.
852Edward Z. Yang <ezyang@mit.edu>**20110113130654
853 Ignore-this: 79001003b1f3cc5005207ccfed980c21
854]
855[fix for remote repos without -r
856Simon Marlow <marlowsd@gmail.com>**20110113131147
857 Ignore-this: 3ddd8a4c616cad01a2dbdb500fb54279
858]
859[add a version of packages that stores all the repos in git
860Simon Marlow <marlowsd@gmail.com>**20110113111733
861 Ignore-this: fcca2eb2e753ee20bb5abce7f30f5205
862]
863[add the -r flag from darcs-all
864Simon Marlow <marlowsd@gmail.com>**20110113111654
865 Ignore-this: ada88377bd95ebb9c668dd48954f321e
866]
867[Make Template Haskell classInstances function return [ClassInstance]
868simonpj@microsoft.com**20110113111421
869 Ignore-this: d14381f0a94170965414dd8724188356
870 
871 This is a recently-introduce function, which was returning
872 a [Name], being the names of the dfuns.  But what you really
873 want (obviously!) is the ClassInstances, and we have a TH type
874 for that.
875 
876 This is an API change, so don't merge into GHC 7.0.  But it's
877 a new part of TH which is still settling down.
878 
879 Fixes Trac #4863.
880]
881[Improve the finder's error messages
882simonpj@microsoft.com**20110113111233
883 Ignore-this: ec4819b0a44af9fd03dc0a8b8e13699d
884 
885 I'd done all the work to add fuzzy-match suggestions, but they
886 weren't really being used!  Here's what you get now
887 
888    module Foo where
889     import Data.Lst
890 
891 Foo.hs:3:1:
892     Failed to load interface for `Data.Lst'
893     Perhaps you meant
894       Data.List (from base)
895       Data.List (needs flag -package haskell2010-1.0.0.0)
896       Data.Int (needs flag -package haskell2010-1.0.0.0)
897     Use -v to see a list of the files searched for.
898]
899[White space only
900simonpj@microsoft.com**20110113093931
901 Ignore-this: 4e46acca5241615a3283996052a634a
902]
903[Produce an error message, not a crash, for HsOpApp with non-var operator
904simonpj@microsoft.com**20110112170719
905 Ignore-this: df0f6f2e3318f9c33a714609019b0262
906 
907 Fixes Trac #4877.
908]
909[update to work with current packages file format
910Simon Marlow <marlowsd@gmail.com>**20110112160224
911 Ignore-this: da73498734aadbfbf0a31389a9dc44d
912]
913[In configure, test that GHC generates code for the correct platform (#4819)
914Simon Marlow <marlowsd@gmail.com>**20110107163541
915 Ignore-this: 29541d3896f9c9bcf791510edae70254
916 Patch supplied by the bug reporter, tidied up by me.
917 
918 $ ./configure --with-ghc=$HOME/fp/bin/i386-unknown-linux/ghc --build=x86_64-unknown-linux
919 checking for gfind... no
920 checking for find... /usr/bin/find
921 checking for sort... /usr/bin/sort
922 checking for GHC version date... inferred 7.1.20110107
923 checking version of ghc... 7.0.1
924 checking build system type... x86_64-unknown-linux-gnu
925 checking host system type... x86_64-unknown-linux-gnu
926 checking target system type... x86_64-unknown-linux-gnu
927 Host platform inferred as: i386-unknown-linux
928 Target platform inferred as: i386-unknown-linux
929 This GHC (/home/simonmar/fp/bin/i386-unknown-linux/ghc) does not generate code for the build platform
930    GHC target platform    : i386-unknown-linux
931    Desired build platform : x86_64-unknown-linux
932]
933[Major refactoring of the type inference engine
934simonpj@microsoft.com**20110112145604
935 Ignore-this: 6a7fc90c9b798e89505606726cc8090e
936 
937 This patch embodies many, many changes to the contraint solver, which
938 make it simpler, more robust, and more beautiful.  But it has taken
939 me ages to get right. The forcing issue was some obscure programs
940 involving recursive dictionaries, but these eventually led to a
941 massive refactoring sweep.
942 
943 Main changes are:
944  * No more "frozen errors" in the monad.  Instead "insoluble
945    constraints" are now part of the WantedConstraints type.
946 
947  * The WantedConstraint type is a product of bags, instead of (as
948    before) a bag of sums.  This eliminates a good deal of tagging and
949    untagging.
950 
951  * This same WantedConstraints data type is used
952      - As the way that constraints are gathered
953      - As a field of an implication constraint
954      - As both argument and result of solveWanted
955      - As the argument to reportUnsolved
956 
957  * We do not generate any evidence for Derived constraints. They are
958    purely there to allow "impovement" by unifying unification
959    variables.
960 
961  * In consequence, nothing is ever *rewritten* by a Derived
962    constraint.  This removes, by construction, all the horrible
963    potential recursive-dictionary loops that were making us tear our
964    hair out.  No more isGoodRecEv search either. Hurrah!
965 
966  * We add the superclass Derived constraints during canonicalisation,
967    after checking for duplicates.  So fewer superclass constraints
968    are generated than before.
969 
970  * Skolem tc-tyvars no longer carry SkolemInfo.  Instead, the
971    SkolemInfo lives in the GivenLoc of the Implication, where it
972    can be tidied, zonked, and substituted nicely.  This alone is
973    a major improvement.
974 
975  * Tidying is improved, so that we tend to get t1, t2, t3, rather
976    than t1, t11, t111, etc
977 
978    Moreover, unification variables are always printed with a digit
979    (thus a0, a1, etc), so that plain 'a' is available for a skolem
980    arising from a type signature etc. In this way,
981      (a) We quietly say which variables are unification variables,
982          for those who know and care
983      (b) Types tend to get printed as the user expects.  If he writes
984              f :: a -> a
985              f = ...blah...
986          then types involving 'a' get printed with 'a', rather than
987          some tidied variant.
988 
989  * There are significant improvements in error messages, notably
990    in the "Cannot deduce X from Y" messages.
991]
992[Fix installation on cygwin
993Ian Lynagh <igloo@earth.li>**20110111194838
994 Ignore-this: fe923d0619da3bd3a34968106c92fdab
995]
996[Do dependency analysis when kind-checking type declarations
997simonpj@microsoft.com**20110110110351
998 Ignore-this: 17a8dee32694d3e1835cf7bb02d3abb5
999 
1000 This patch fixes Trac #4875.  The main point is to do dependency
1001 analysis on type and class declarations, and kind-check them in
1002 dependency order, so as to improve error messages.
1003 
1004 This patch means that a few programs that would typecheck before won't
1005 typecheck any more; but before we were (naughtily) going beyond
1006 Haskell 98 without any language-extension flags, and Trac #4875
1007 convinces me that doing so is a Bad Idea.
1008 
1009 Here's an example that won't typecheck any more
1010        data T a b = MkT (a b)
1011        type F k = T k Maybe
1012 
1013 If you look at T on its own you'd default 'a' to kind *->*;
1014 and then kind-checking would fail on F.
1015 
1016 But GHC currently accepts this program beause it looks at
1017 the *occurrences* of T.
1018]
1019[Move imports around (no change in behaviour)
1020simonpj@microsoft.com**20110110105647
1021 Ignore-this: d618cabbc52be7d7968de1e0bdd44082
1022]
1023[Make fuzzy matching a little less eager for short identifiers
1024simonpj@microsoft.com**20110107102855
1025 Ignore-this: a753643e88433d74b44a480cc0f4170c
1026 
1027 For single-character identifiers we now don't make any suggestions
1028 See comments in Util.fuzzyLookup
1029]
1030[Fix Trac #4870: get the inlining for an imported INLINABLE Id
1031simonpj@microsoft.com**20110105002712
1032 Ignore-this: 60c0192eb48590c2e6868d15ba8f84ce
1033 
1034 We need the unfolding even for a *recursive* function (indeed
1035 that's the point) and I was using the wrong function to get it
1036 (idUnfolding rather than realIdUnfolding).
1037]
1038[Rejig the includes/ installation rules
1039Ian Lynagh <igloo@earth.li>**20110109181158
1040 They're a little nicer now, and a regression in the cygwin build is
1041 fixed (the $i in the destination wasn't surviving being passed through
1042 cygpath).
1043]
1044[Make DESTDIR an absolute path when installing; fixes #4883
1045Ian Lynagh <igloo@earth.li>**20110108171635]
1046[Add utils/ghc-cabal/Makefile
1047Ian Lynagh <igloo@earth.li>**20110108144049]
1048[Remove redundant import
1049Ian Lynagh <igloo@earth.li>**20110108130047
1050 Ignore-this: 1c7fdec77b48319c845c9593b5fb94af
1051]
1052[Improve error message of :set in ghci (ticket #4190).
1053Michal Terepeta <michal.terepeta@gmail.com>**20101130211505
1054 Ignore-this: ccc8a0816a900ba8c4a966285a465b23
1055]
1056[Improve error message when importing data constructors (ticket #4058).
1057Michal Terepeta <michal.terepeta@gmail.com>**20101127211338
1058 Ignore-this: 3289a08f0391dd90dfef2e0403a04ccd
1059]
1060[catch SIGTSTP and save/restore terminal settings (#4460)
1061Simon Marlow <marlowsd@gmail.com>**20110107124042
1062 Ignore-this: 38f7f27bf75178899f466404c048241d
1063 As far as I can tell, it is the responsibility of the program to save
1064 and restore its own terminal settings across a suspend/foreground, the
1065 shell doesn't do it (which seems odd).  So I've added a signal handler
1066 for SIGTSTP to the RTS which will save and restore the terminal
1067 settings iff we modified them with hSetBuffering or hSetEcho (we
1068 already restore them at exit time in these cases).
1069]
1070[comment updates
1071Simon Marlow <marlowsd@gmail.com>**20110107094236
1072 Ignore-this: c2b30b0c98645e2847a2749c7fdc167f
1073]
1074[On Cygwin, use a Cygwin-style path for /bin/install's destination
1075Ian Lynagh <igloo@earth.li>**20110106223030
1076 
1077 cygwin's /bin/install doesn't set file modes correctly if the
1078 destination path is a C: style path:
1079 
1080 $ /bin/install -c -m 644 foo /cygdrive/c/cygwin/home/ian/foo2
1081 $ /bin/install -c -m 644 foo c:/cygwin/home/ian/foo3
1082 $ ls -l foo*
1083 -rw-r--r-- 1 ian None 0 2011-01-06 18:28 foo
1084 -rw-r--r-- 1 ian None 0 2011-01-06 18:29 foo2
1085 -rwxrwxrwx 1 ian None 0 2011-01-06 18:29 foo3
1086 
1087 This causes problems for bindisttest/checkBinaries.sh which then
1088 thinks that e.g. the userguide HTML files are binaries.
1089 
1090 We therefore use a /cygdrive path if we are on cygwin
1091]
1092[Fix mkUserGuidePart program name on Windows
1093Ian Lynagh <igloo@earth.li>**20110106143707]
1094[add comment to remind people to update driver/gcc/gcc.c
1095Simon Marlow <marlowsd@gmail.com>**20110106152402
1096 Ignore-this: c07d7ac11eb9221ef821f78aab1807cb
1097]
1098[use Win32 CreateProcess() rather than mingw spawnv() (#4531)
1099Simon Marlow <marlowsd@gmail.com>**20110106133834
1100 Ignore-this: 4c0947853549dad034622c044391af6c
1101]
1102[update paths now that we upgraded gcc to 4.5.0
1103Simon Marlow <marlowsd@gmail.com>**20110106133729
1104 Ignore-this: f8f9bcad984fdd472e0ae958b66bea9d
1105]
1106[fix markup
1107Simon Marlow <marlowsd@gmail.com>**20110106093152
1108 Ignore-this: 555b6e39ae6b5a177b03c5edffc169ab
1109]
1110[fix up multi-line GHCi patch (#4316)
1111Simon Marlow <marlowsd@gmail.com>**20110105154548
1112 Ignore-this: 53d5d489bd2a792c01f2cc56a11f3ce6
1113]
1114[multiline commands in GHCi #4316
1115Vivian McPhail <haskell.vivian.mcphail@gmail.com>**20101105051308
1116 This patch adds support for multiline commands in GHCi.
1117 
1118 The first line of input is lexed.  If there is an active
1119 layout context once the lexer reaches the end of file, the
1120 user is prompted for more input.
1121 
1122 Multiline input is exited by an empty line and can be escaped
1123 with a user interrupt.
1124 
1125 Multiline mode is toggled with `:set +m`
1126]
1127[Replace a #if with a Haskell conditional
1128Ian Lynagh <igloo@earth.li>**20110105183011
1129 Ignore-this: f08f3a4356586efab2725ad8704b2eba
1130]
1131[Whitespace only in X86.Ppr
1132Ian Lynagh <igloo@earth.li>**20110105171124]
1133[Fix error compiling AsmCodeGen.lhs for PPC Mac (unused makeFar addr)
1134naur@post11.tele.dk**20101219213555
1135 Ignore-this: ab25d5f2e2ebe163547d5babaf4b1dbf
1136]
1137[Define cTargetArch and start to use it rather than ifdefs
1138Ian Lynagh <igloo@earth.li>**20110104220013
1139 Using Haskell conditionals means the compiler sees all the code, so
1140 there should be less rot of code specific to uncommon arches. Code
1141 for other platforms should still be optimised away, although if we want
1142 to support targetting other arches then we'll need to compile it
1143 for-real anyway.
1144]
1145[Fix error compiling AsmCodeGen.lhs for PPC Mac (rtsPackageId)
1146naur@post11.tele.dk**20101219212530
1147 Ignore-this: 946f6d3e0d3c3ddf2dc07b85e1f82d85
1148]
1149[Rename the c*Platform variables to c*PlatformString
1150Ian Lynagh <igloo@earth.li>**20110104210250]
1151[Fix #4829 (build does not respect --with-gcc option)
1152gwright@antiope.com**20101221133233
1153 Ignore-this: 37918feb82f911c2beb75915b6e8b97b
1154 
1155 This patch fixes what seems to be the last problem with the --with-gcc
1156 option.  On OS X, we need to pass the path to gcc to dtrace as the
1157 preprocessor.  (Internally, dtrace on OS X sets the default preprocessor
1158 to /usr/bin/gcc.)  ATM, dtrace is only supported on OS X, so we don't
1159 need any conditionalization.  If dtrace is ported to other platforms,
1160 we might need to change this. However, usage on other platforms will
1161 probably be similar to OS X, since many of Apple's changes are to
1162 use the gnu toolchain instead of the Sun toolchain.
1163   
1164]
1165[Drop a seven years old workaround for happy
1166Matthias Kilian <kili@outback.escape.de>**20101231192343
1167 Ignore-this: a9348c91292c113bd967464fbe859f1f
1168]
1169[Add gcc and ld flags to --info output
1170Ian Lynagh <igloo@earth.li>**20101220173520]
1171[Fix Trac #4525: report type errors in terms of the immediate type synonym
1172simonpj@microsoft.com**20101224082520
1173 Ignore-this: a3bd076bfe0e1c6f575b106f77f326c6
1174 
1175 This small change means that if you have
1176      type Age = Int
1177 and you try to unify Age and Bool, you'll get a complaint about
1178 not matching Age and Bool, rather than Int and Bool.  See the notes
1179 with Trac #4525
1180]
1181[Comments only
1182simonpj@microsoft.com**20101224082310
1183 Ignore-this: 1f69fa3244663b653607093efcdf7b0
1184]
1185[Implement fuzzy matching for the Finder
1186simonpj@microsoft.com**20101222175400
1187 Ignore-this: 4dfbbc07bcb59c5f4cee9a902c89d63e
1188 
1189 ..so that you get a more helpful message when
1190 you mis-spell a module name in an 'import'.
1191 
1192 Validates, but not fully tested.
1193 
1194 Based on Max's patch in Trac #2442, but heavily refactored.
1195]
1196[Implement fuzzy matching for the renamer
1197simonpj@microsoft.com**20101222175306
1198 Ignore-this: 66478736249de793a61612f184d484b0
1199 
1200 ...so that you get helpful suggestions when you mis-spell a name
1201 Based on Max's patch in Trac #2442, but heavily refactored.
1202]
1203[Add fuzzyLookup, a variant of fuzzyMatch
1204simonpj@microsoft.com**20101222175124
1205 Ignore-this: f0eafaf275b9edffee176f2fb4effe2f
1206 
1207 Plus, I changed quite a bit of layout to make the lines shorter.
1208]
1209[White space only
1210simonpj@microsoft.com**20101222175001
1211 Ignore-this: ddabada2042f4529e83d1c1ecb052306
1212]
1213[Layout and white space only
1214simonpj@microsoft.com**20101222174950
1215 Ignore-this: bf4e4fd9d39714d0461ab799d6b8ed91
1216]
1217[Tidy up rebindable syntax for MDo
1218simonpj@microsoft.com**20101222132210
1219 Ignore-this: b40ae8709e5a39d75f2b2813169af215
1220 
1221 For a long time an 'mdo' expression has had a SyntaxTable
1222 attached to it.  However, we're busy deprecating SyntaxTables
1223 in favour of rebindable syntax attached to individual Stmts,
1224 and MDoExpr was totally inconsistent with DoExpr in this
1225 regard.
1226 
1227 This patch tidies it all up.  Now there's no SyntaxTable on
1228 MDoExpr, and 'modo' is generally handled much more like 'do'.
1229 
1230 There is resulting small change in behaviour: now MonadFix is
1231 required only if you actually *use* recursion in mdo. This
1232 seems consistent with the implicit dependency analysis that
1233 is done for mdo.
1234 
1235 Still to do:
1236   * Deal with #4148 (this patch is on the way)
1237   * Get rid of the last remaining SyntaxTable on HsCmdTop
1238]
1239[Make the occurrence analyser track preInlineUnconditionally
1240simonpj@microsoft.com**20101222131156
1241 Ignore-this: 82edb06bcca6106327c2cce9d78c4e61
1242 
1243 This fixes a somewhat obscure situation in which an
1244 over-optimistic use of "occurs once" led to an infinite
1245 sequence of simplifier iterations.  Se Note [Cascading inlines]
1246 for the details.
1247 
1248 This showed up when compiling rather large DPH programs, which
1249 run lots of iterations of the simplifier, which in turn made
1250 compilation take much longer than necessary.
1251]
1252[Make mkDFunUnfolding more robust
1253simonpj@microsoft.com**20101222130854
1254 Ignore-this: 10bb4168a7080c843f6613043354151b
1255 
1256 It now uses tcSplitDFunTy, which is designed for the purpose and
1257 allows arbitrary argument types to the dfun, rather than
1258 tcSplitSigmaTy.  This generality is used in DPH, which has
1259 internally-generated dfuns with impliciation-typed arguments.
1260 
1261 To do this I had to make tcSplitDFunTy return the number of
1262 arguments, so there are some minor knock-on effects in other
1263 modules.
1264]
1265[Count allocations more accurately
1266Simon Marlow <marlowsd@gmail.com>**20101221152956
1267 Ignore-this: 33a4ed3a77bf35f232aa5c9078e8e380
1268 The allocation stats (+RTS -s etc.) used to count the slop at the end
1269 of each nursery block (except the last) as allocated space, now we
1270 count the allocated words accurately.  This should make allocation
1271 figures more predictable, too.
1272 
1273 This has the side effect of reducing the apparent allocations by a
1274 small amount (~1%), so remember to take this into account when looking
1275 at nofib results.
1276]
1277[Add a simple arity analyser
1278simonpj@microsoft.com**20101221165800
1279 Ignore-this: d5f3a9f56404d61bb7f374c875b42c49
1280 
1281 I've wanted to do this for ages, but never gotten around to
1282 it.  The main notes are in Note [Arity analysis] in SimplUtils.
1283 
1284 The motivating example for arity analysis is this:
1285 
1286   f = \x. let g = f (x+1)
1287           in \y. ...g...
1288 
1289 What arity does f have?  Really it should have arity 2, but a naive
1290 look at the RHS won't see that.  You need a fixpoint analysis which
1291 says it has arity "infinity" the first time round.
1292 
1293 This makes things more robust to the way in which you write code.  For
1294 example, see Trac #4474 which is fixed by this change.
1295 
1296 Not a huge difference, but worth while:
1297 
1298         Program           Size    Allocs   Runtime   Elapsed
1299 --------------------------------------------------------------------------------
1300             Min          -0.4%     -2.2%    -10.0%    -10.0%
1301             Max          +2.7%     +0.3%     +7.1%     +6.9%
1302  Geometric Mean          -0.3%     -0.2%     -2.1%     -2.2%
1303 
1304 I don't really believe the runtime numbers, because the machine was
1305 busy, but the bottom line is that not much changes, and what does
1306 change reliably (allocation and size) is in the right direction.
1307]
1308[Miscellaneous tidying up and refactoring
1309simonpj@microsoft.com**20101221161931
1310 Ignore-this: 7706d3065e6fc1defafe1cb8975b9969
1311]
1312[Comments only
1313simonpj@microsoft.com**20101221161918
1314 Ignore-this: 3e269a62da5cbec72d3e4b8328689628
1315]
1316[Single-method classes are implemented with a newtype
1317simonpj@microsoft.com**20101221161911
1318 Ignore-this: 4ca00f0b367fbeb8146146bc53116eb7
1319 
1320 This patch changes things so that such classes rely on the coercion
1321 mechanism for inlining (since the constructor is really just a cast)
1322 rather than on the dfun mechanism, therby removing some needless
1323 runtime indirections.
1324]
1325[For single-method classes use newtypes
1326simonpj@microsoft.com**20101101080736
1327 Ignore-this: d3851f92eb2385501411da57066b775e
1328 
1329 This clears up an awkward hack for exprIsConApp_maybe, and
1330 works better too.  See Note [Single-method classes] in
1331 TcInstDcls.
1332]
1333[boundTaskExiting: don't set task->stopped unless this is the last call (#4850)
1334Simon Marlow <marlowsd@gmail.com>**20101221115807
1335 Ignore-this: 7e1b990aa08b3ea9cdaa9385d8e41e48
1336 The bug in this case was that we had a worker thread making a foreign
1337 call which invoked a callback (in this case it was performGC, I
1338 think).  When the callback ended, boundTaskExiting() was setting
1339 task->stopped, but the Task is now per-OS-thread, so it is shared by
1340 the worker that made the original foreign call.  When the foreign call
1341 returned, because task->stopped was set, the worker was not placed on
1342 the queue of spare workers.  Somehow the worker woke up again, and
1343 found the spare_workers queue empty, which lead to a crash.
1344 
1345 Two bugs here: task->stopped should not have been set by
1346 boundTaskExiting (this broke when I split the Task and InCall structs,
1347 in 6.12.2), and releaseCapabilityAndQueueWorker() should not be
1348 testing task->stopped anyway, because it should only ever be called
1349 when task->stopped is false (this is now an assertion).
1350]
1351[releaseCapabilityAndQueueWorker: task->stopped should be false (#4850)
1352Simon Marlow <marlowsd@gmail.com>**20101221114911
1353 Ignore-this: b9c430a4bc9d2e0c7f4140d6d6971eae
1354]
1355[Fix Windows build
1356Simon Marlow <marlowsd@gmail.com>**20101221102101
1357 Ignore-this: f4773e06d030a335c9ac721af193b8d2
1358]
1359[raiseExceptionHelper: update tso->stackobj->sp before calling threadStackOverflow (#4845)
1360Simon Marlow <marlowsd@gmail.com>**20101221101411
1361 Ignore-this: 48495131fcc8c548882a470c2509f9f5
1362]
1363[add 'make re2' for rebuilding stage2 (similarly re1 and re3)
1364Simon Marlow <marlowsd@gmail.com>**20101221100254
1365 Ignore-this: 5c0afe3810b66a5b6e53a3a0fe933945
1366]
1367[fix warning
1368Simon Marlow <marlowsd@gmail.com>**20101216160415
1369 Ignore-this: 54a0eedfa5b7fc15c31dffffb1b10aad
1370]
1371[Small improvement to CorePrep
1372simonpj@microsoft.com**20101220123715
1373 Ignore-this: d0490225ed1895a1a5b97d786ed44260
1374 
1375 This change avoids unnecessary bindings. Example
1376 
1377      foo (let fn = \x.blah in
1378           in fn)
1379 
1380 We were generating something stupid like
1381 
1382     let fn = \x.blah in
1383     let fn' = \eta. fn eta
1384     in foo fn
1385 
1386 Now we don't.  The change is quite small.
1387 
1388 Thanks to Ben for showing me an example of this happening.
1389]
1390[Fix warnings
1391Ian Lynagh <igloo@earth.li>**20101219202711
1392 Ignore-this: 898015b086f684de5371bf97a23b9e2e
1393]
1394[Small refactoring
1395Ian Lynagh <igloo@earth.li>**20101219194032]
1396[Drop GhcWithLlvmCodeGen configuration bits
1397Matthias Kilian <kili@outback.escape.de>**20101219180239
1398 Ignore-this: 815ed46be7650792f85807c232edfcc
1399 The LLVM code generator is always built unconditionally, so both the
1400 configuration variable in mk/config.mk.in as well as the string in
1401 compilerInfo can be removed.
1402]
1403[Pass --hoogle to haddock; fixes trac #4521
1404Ian Lynagh <igloo@earth.li>**20101219125243]
1405[vectoriser: don't always pass superclass dictionaries to PA dfuns
1406Roman Leshchinskiy <rl@cse.unsw.edu.au>**20101218234838
1407 Ignore-this: 77c71976db8fc63aeb83f4abdba994d8
1408 
1409 This is just a guess at how this should work.
1410]
1411[vectoriser: delete dead code
1412Roman Leshchinskiy <rl@cse.unsw.edu.au>**20101218125350
1413 Ignore-this: 437eea71ad15ad5dc7902e596597c577
1414]
1415[vectoriser: adapt to new superclass story part I (dictionary construction)
1416Roman Leshchinskiy <rl@cse.unsw.edu.au>**20101218114953
1417 Ignore-this: 29c9aa46a1622beaae1dcefc4c482a30
1418]
1419[Replace uses of the old try function with the new one
1420Ian Lynagh <igloo@earth.li>**20101218230827
1421 Ignore-this: 5dd6c1a4142405aa1aab3fc4ec07eea6
1422]
1423[Replace uses of the old catch function with the new one
1424Ian Lynagh <igloo@earth.li>**20101218213350]
1425[Create ~/.ghc/ if it doesn't already exist; fixes trac #4522
1426Ian Lynagh <igloo@earth.li>**20101218184925]
1427[Document GADTSyntax extension
1428Ian Lynagh <igloo@earth.li>**20101218150121]
1429[Implement GADTSyntax extension
1430Ian Lynagh <igloo@earth.li>**20101218144550]
1431[Whitespace-only in rts/Linker.c
1432Ian Lynagh <igloo@earth.li>**20101217234124]
1433[Add some casts to fix warnings; patch from Greg Wright
1434Ian Lynagh <igloo@earth.li>**20101217223811]
1435[Put an up-to-date Makefile in docs/Makefile
1436Ian Lynagh <igloo@earth.li>**20101217223707
1437 It doesn't do anything useful yet, but it works with the new build system
1438]
1439[do not compile part of shared lib RTS with -fno-PIC on Solaris
1440Karel Gardas <karel.gardas@centrum.cz>**20101217085133
1441 Ignore-this: 8c8dbb45cac0578a58a3557f1e03c66
1442]
1443[provide shared libraries support on i386-unknown-solaris2 platform
1444Karel Gardas <karel.gardas@centrum.cz>**20101217084617
1445 Ignore-this: b6079c6a39a71200a1ee863573e40828
1446]
1447[fix CPP detection of Solaris in NCG
1448Karel Gardas <karel.gardas@centrum.cz>**20101217084510
1449 Ignore-this: 9d1ce59d469294eab1f0cbc697e48d69
1450]
1451[Fix checkBinaries on OS X
1452Ian Lynagh <igloo@earth.li>**20101216201121]
1453[Remove redundant HpcMap and HpcSet wrappers around Data.{Map,Set}
1454Ian Lynagh <igloo@earth.li>**20101216190605]
1455[Use "-perm -u+x" rather than "-executable" to find executables
1456Ian Lynagh <igloo@earth.li>**20101216145235
1457 On Windows, -executable is matching the html docs.
1458]
1459[Remove a debugging print
1460Ian Lynagh <igloo@earth.li>**20101216011459]
1461[__GLASGOW_HASKELL__ >= 604 is now always true
1462Ian Lynagh <igloo@earth.li>**20101215214656]
1463[Remove more dead code now we require GHC >= 6.12
1464Ian Lynagh <igloo@earth.li>**20101215213715]
1465[refactor and tidy up the section on RTS options
1466Simon Marlow <marlowsd@gmail.com>**20101216123151
1467 Ignore-this: 9cdafd687351d8a3ff879b64347f85d3
1468]
1469[Related to #4826: Some minor tweaks to the wording of the User Guide, section 4.16
1470Orphi <MathematicalOrchid@hotmail.com>**20101209170440
1471 Ignore-this: c3d942d58594be7d4c2eb4dc3a22f19
1472]
1473[FIX #4826 partial: Add -rtsopts and -with-rtsopts to User Guide section 4.11.6
1474Orphi <MathematicalOrchid@hotmail.com>**20101209165152
1475 Ignore-this: 2fc1c0abbb783695773ab0f9c013bbaa
1476]
1477[FIX #4826 partially: Change -f to -? in User Guide section F4.16
1478Orphi <MathematicalOrchid@hotmail.com>**20101209144148
1479 Ignore-this: 73410b350e80c8943ae722dec8dea44b
1480]
1481[fix #3910
1482Simon Marlow <marlowsd@gmail.com>**20101216114452
1483 Ignore-this: 410e95e188344a523520e192a3fb58ea
1484]
1485[remove an optimisation that wasn't
1486Simon Marlow <marlowsd@gmail.com>**20101215152656
1487 Ignore-this: e8413f58e8292c6e7463087d885b3a7d
1488]
1489[fix a warning
1490Simon Marlow <marlowsd@gmail.com>**20101216105723
1491 Ignore-this: ed6024378021a698ce638267ed3e21ab
1492]
1493[use EXTERN_INLINE instead of STATIC_INLINE to avoid some gcc warnings
1494Simon Marlow <marlowsd@gmail.com>**20101216105709
1495 Ignore-this: d4e1586cf318883a8e611b55df7fbf10
1496]
1497[remove dead code
1498Simon Marlow <marlowsd@gmail.com>**20101216104944
1499 Ignore-this: 97a04a3e37c1b28abc222a28bab3d17d
1500]
1501[fix retainer profiling: add missing case for TSO
1502Simon Marlow <marlowsd@gmail.com>**20101216103900
1503 Ignore-this: 11bda81ac159f638d719c1f6177702fb
1504]
1505[add a missing STACK case
1506Simon Marlow <marlowsd@gmail.com>**20101216102100
1507 Ignore-this: ac1c036b5cbf4209b1d10b6ab1c83f27
1508]
1509[Remove code that is dead now that we need >= 6.12 to build
1510Ian Lynagh <igloo@earth.li>**20101215201006]
1511[fix for large stack allocations
1512Simon Marlow <marlowsd@gmail.com>**20101215152419
1513 Ignore-this: d9aca17d68bd99214c126989a2318e79
1514]
1515[Implement stack chunks and separate TSO/STACK objects
1516Simon Marlow <marlowsd@gmail.com>**20101215120843
1517 Ignore-this: 73fa9460314d4a4e54456af12bef7960
1518 
1519 This patch makes two changes to the way stacks are managed:
1520 
1521 1. The stack is now stored in a separate object from the TSO.
1522 
1523 This means that it is easier to replace the stack object for a thread
1524 when the stack overflows or underflows; we don't have to leave behind
1525 the old TSO as an indirection any more.  Consequently, we can remove
1526 ThreadRelocated and deRefTSO(), which were a pain.
1527 
1528 This is obviously the right thing, but the last time I tried to do it
1529 it made performance worse.  This time I seem to have cracked it.
1530 
1531 2. Stacks are now represented as a chain of chunks, rather than
1532    a single monolithic object.
1533 
1534 The big advantage here is that individual chunks are marked clean or
1535 dirty according to whether they contain pointers to the young
1536 generation, and the GC can avoid traversing clean stack chunks during
1537 a young-generation collection.  This means that programs with deep
1538 stacks will see a big saving in GC overhead when using the default GC
1539 settings.
1540 
1541 A secondary advantage is that there is much less copying involved as
1542 the stack grows.  Programs that quickly grow a deep stack will see big
1543 improvements.
1544 
1545 In some ways the implementation is simpler, as nothing special needs
1546 to be done to reclaim stack as the stack shrinks (the GC just recovers
1547 the dead stack chunks).  On the other hand, we have to manage stack
1548 underflow between chunks, so there's a new stack frame
1549 (UNDERFLOW_FRAME), and we now have separate TSO and STACK objects.
1550 The total amount of code is probably about the same as before.
1551 
1552 There are new RTS flags:
1553 
1554    -ki<size> Sets the initial thread stack size (default 1k)  Egs: -ki4k -ki2m
1555    -kc<size> Sets the stack chunk size (default 32k)
1556    -kb<size> Sets the stack chunk buffer size (default 1k)
1557 
1558 -ki was previously called just -k, and the old name is still accepted
1559 for backwards compatibility.  These new options are documented.
1560]
1561[comments on SRC_HC_OPTS (#4829)
1562Simon Marlow <marlowsd@gmail.com>**20101214101340
1563 Ignore-this: e2bdec00f07b68e82837e77a4faf6514
1564]
1565[fix another sanity error, and refactor/tidy up
1566Simon Marlow <marlowsd@gmail.com>**20101209163919
1567 Ignore-this: d5ce953ac78e90fc0e22cd9848d26e2e
1568]
1569[Fix a bug in functorLikeTraverse, which was giving wrong answer for tuples
1570simonpj@microsoft.com**20101215123725
1571 Ignore-this: 560220e92429b5b1a6197a62f94a4ff2
1572 
1573 This bug led to Trac #4816, which is hereby fixed
1574]
1575[Improve printing for -ddump-deriv
1576simonpj@microsoft.com**20101215121955
1577 Ignore-this: 3181c948c4c2471bd99b32c5ee487a1e
1578]
1579[Tighten up what it means to be an "enumeration data constructor"
1580simonpj@microsoft.com**20101215121927
1581 Ignore-this: 459b3f9f7994a13094ed87b0768b33a8
1582 
1583 See Note [Enumeration types] in TyCon, and comments in Trac #4528
1584]
1585[Allow enumerations to have phantom arguments.
1586simonpj@microsoft.com**20101215121817
1587 Ignore-this: 32ef8cb869e6e38c2e43b3ae87b1b9a8
1588 
1589 The bytecode generator was being too eager.
1590 Fixes Trac #4528, or rather, a near variant.
1591]
1592[Instance declaration overlap allowed if *either* has -XOverlappingInstances
1593simonpj@microsoft.com**20101214180500
1594 Ignore-this: f1b1492541a7e0464ebc6adb45510a2e
1595 
1596 This satisfies Trac #3877.  Documentation is changed too.
1597 I'm not sure if this should go in 7.0.2.
1598]
1599[Fix Trac #4841: behave right with TypeSynonymInstances and NoFlexibleInstances
1600simonpj@microsoft.com**20101214174755
1601 Ignore-this: dccd707fdca84904b7885170a296ecb6
1602 
1603 When we have TypeSynonymInstances without FlexibleInstances we should still
1604 insist on a H98-style instance head, after looking through the synonym.
1605 
1606 This patch also make FlexibleInstances imply TypeSynonymInstances.  Anything
1607 else is a bit awkward, and not very useful.
1608 
1609]
1610[Fix Trac #3731: more superclass subtlety (sigh)
1611simonpj@microsoft.com**20101214180344
1612 Ignore-this: f4168e59f3164303ba7be022ba19c37b
1613 
1614 I will add more comments, but I want to commit this tonight,
1615 so the overnight builds get it.
1616]
1617[Less verbose debug print
1618simonpj@microsoft.com**20101214180248
1619 Ignore-this: e405e8545763e913155abe43daf7e36c
1620]
1621[Wibble to InstEnv.instanceHead
1622simonpj@microsoft.com**20101214082939
1623 Ignore-this: 851db517f8638a0aeb7ad461298f7e9f
1624 
1625 Fixes an accidental glitch in T1835
1626]
1627[Remove dead code now that we require the bootstrapping compiler be >= 6.12
1628Ian Lynagh <igloo@earth.li>**20101214011011]
1629[GHC 6.12 is now needed to build the HEAD
1630Ian Lynagh <igloo@earth.li>**20101214010923]
1631[Add libstdc++-4.5.0-1-mingw32-dll-6.tar.lzma to mingw tarballs
1632Ian Lynagh <igloo@earth.li>**20101213223153]
1633[Fix recursive superclasses (again).  Fixes Trac #4809.
1634simonpj@microsoft.com**20101213171511
1635 Ignore-this: b91651397918fd8f0183812f9a070073
1636 
1637 This patch finally deals with the super-delicate question of
1638 superclases in possibly-recursive dictionaries.  The key idea
1639 is the DFun Superclass Invariant (see TcInstDcls):
1640 
1641      In the body of a DFun, every superclass argument to the
1642      returned dictionary is
1643        either   * one of the arguments of the DFun,
1644        or       * constant, bound at top level
1645 
1646 To establish the invariant, we add new "silent" superclass
1647 argument(s) to each dfun, so that the dfun does not do superclass
1648 selection internally.  There's a bit of hoo-ha to make sure that
1649 we don't print those silent arguments in error messages; a knock
1650 on effect was a change in interface-file format.
1651 
1652 A second change is that instead of the complex and fragile
1653 "self dictionary binding" in TcInstDcls and TcClassDcl,
1654 using the same mechanism for existential pattern bindings.
1655 See Note [Subtle interaction of recursion and overlap] in TcInstDcls
1656 and Note [Binding when looking up instances] in InstEnv.
1657 
1658 Main notes are here:
1659 
1660   * Note [Silent Superclass Arguments] in TcInstDcls,
1661     including the DFun Superclass Invariant
1662 
1663 Main code changes are:
1664 
1665   * The code for MkId.mkDictFunId and mkDictFunTy
1666 
1667   * DFunUnfoldings get a little more complicated;
1668     their arguments are a new type DFunArg (in CoreSyn)
1669 
1670   * No "self" argument in tcInstanceMethod
1671   * No special tcSimplifySuperClasss
1672   * No "dependents" argument to EvDFunApp
1673 
1674 IMPORTANT
1675    It turns out that it's quite tricky to generate the right
1676    DFunUnfolding for a specialised dfun, when you use SPECIALISE
1677    INSTANCE.  For now I've just commented it out (in DsBinds) but
1678    that'll lose some optimisation, and I need to get back to
1679    this.
1680]
1681[Doing the smart canonicalization only if we are not simplifying a Rule LHS.
1682dimitris@microsoft.com**20101210132221
1683 Also, same thing now applies for adding superclasses.
1684 
1685]
1686[Moved canonicalisation inside solveInteract
1687dimitris@microsoft.com**20101209141215
1688 
1689 Moreover canonicalisation now is "clever", i.e. it never canonicalizes a class
1690 constraint if it can already discharge it from some other inert or previously
1691 encountered constraints. See Note [Avoiding the superclass explosion]
1692 
1693]
1694[GHCi linker: Assume non-Haskell libraries are dynamic libs
1695Ian Lynagh <igloo@earth.li>**20101213124930
1696 Ignore-this: aa153a8f6e309c7b3dae7e46bb7a9583
1697 This works around a segfault we get when trying to load libiconv.a on
1698 some platforms.
1699]
1700[Add --version support to ghc-cabal
1701Ian Lynagh <igloo@earth.li>**20101212213600
1702 Ignore-this: ef696dcb1b96a23765f9f18e75a56f5
1703]
1704[Don't link the GHC RTS into our C-only programs
1705Ian Lynagh <igloo@earth.li>**20101210185402
1706 Ignore-this: 56f620f7eb16a03e7497a161bc48458e
1707]
1708[Build a copy of ghc-cabal with the in-tree compiler, for the bindist
1709Ian Lynagh <igloo@earth.li>**20101210181123]
1710[Add a test that all programs in the bindist were built with the right GHC
1711Ian Lynagh <igloo@earth.li>**20101210161218
1712 They should use the GHC from the build tree, not the bootstrapping compiler.
1713]
1714[Fix Trac #4534: renamer bug
1715simonpj@microsoft.com**20101210084530
1716 Ignore-this: 8163bfa3a56344cfe89ad17c62e9655d
1717   
1718 The renamer wasn't attaching the right used-variables to a
1719 TransformStmt constructor.
1720 
1721 The real modification is in RnExpr; the rest is just
1722 pretty-printing and white space.
1723]
1724[White space only
1725simonpj@microsoft.com**20101210084255
1726 Ignore-this: 3fcf8a4fc8c15052c379a135951d53ea
1727]
1728[Comments only
1729simonpj@microsoft.com**20101210084116
1730 Ignore-this: 55bb1de129b1c9513751885eaa84b884
1731]
1732[Make the case-to-let transformation a little less eager
1733simonpj@microsoft.com**20101208172251
1734 Ignore-this: 55eaa1b5753af31aeb32ec792cb6b662
1735 
1736 See Note [Case elimination: lifted case].
1737 Thanks to Roman for identifying this case.
1738]
1739[warning fix: don't redefine BLOCKS_PER_MBLOCK
1740Simon Marlow <marlowsd@gmail.com>**20101210094002
1741 Ignore-this: cadba57f1c38f5e2af1de37d0a79c7ee
1742]
1743[Only reset the event log if logging is turned on (addendum to #4512)
1744Simon Marlow <marlowsd@gmail.com>**20101210093951
1745 Ignore-this: c9f85f0de2b11a37337672fba59aecc6
1746]
1747[allocate enough room for the longer filename (addendum to #4512)
1748Simon Marlow <marlowsd@gmail.com>**20101210093906
1749 Ignore-this: 270dc0219d98f1e0f9e006102ade7087
1750]
1751[Fix Windows build: move rtsTimerSignal to the POSIX-only section
1752Simon Marlow <marlowsd@gmail.com>**20101210090045
1753 Ignore-this: aa1844b70b9f1a44447787c4bbe10d44
1754]
1755[Default the value of -dppr-cols when the static flags aren't initialised yet
1756Ben Lippmeier <benl@ouroborus.net>**20101210060154
1757 Ignore-this: 4cea29085ef904f379a8829714c9e180
1758 If GHC's command line options are bad then the options parser uses the
1759 pretty printer before the -dppr-cols flag has been read.
1760]
1761[Defensify naked read in LLVM mangler
1762Ben Lippmeier <benl@ouroborus.net>**20101210045922
1763 Ignore-this: 1373f597863851bd03e7a7254558ed04
1764]
1765[Formatting only
1766Ben Lippmeier <benl@ouroborus.net>**20101210042600
1767 Ignore-this: 20bbcd95c70b59094d0bb8a63e459103
1768]
1769[Always ppr case alts on separate lines
1770Ben Lippmeier <benl@ouroborus.net>**20101208070508
1771 Ignore-this: 7e2edd57a61427621aeb254aef84f0f7
1772]
1773[Add -dppr-colsN to set width of dumps
1774Ben Lippmeier <benl@ouroborus.net>**20101208070245
1775 Ignore-this: edc64fee6c373b895bb80b83b549ce1a
1776]
1777[Add -dppr-case-as-let to print "strict lets" as actual lets
1778Ben Lippmeier <benl@ouroborus.net>**20101208065548
1779 Ignore-this: eb1d122dbd73b5263cae3a9f8259a838
1780]
1781[Suppress more info with -dsuppress-idinfo
1782Ben Lippmeier <benl@ouroborus.net>**20101208063037
1783 Ignore-this: 5e8213d7b8d2905e245917aa3e83efc5
1784]
1785[Implement -dsuppress-type-signatures
1786Ben Lippmeier <benl@ouroborus.net>**20101208062814
1787 Ignore-this: 34dbefe5f8d7fe58ecb26d6a748d1c71
1788]
1789[Add more suppression flags
1790Ben Lippmeier <benl@ouroborus.net>**20101208020723
1791 Ignore-this: b010ba9789a2fde6b815f33494fcc23c
1792  -dsuppress-all
1793  -dsuppress-type-applications
1794  -dsuppress-idinfo
1795]
1796[fix ticket number (#4505)
1797Simon Marlow <marlowsd@gmail.com>**20101209120404
1798 Ignore-this: 5769c5ce2a8d69d62d977a9ae138ec23
1799]
1800[fix warnings
1801Simon Marlow <marlowsd@gmail.com>**20101209115844
1802 Ignore-this: ffff37feb2abbfc5bd12940c7007c208
1803]
1804[Catch too-large allocations and emit an error message (#4505)
1805Simon Marlow <marlowsd@gmail.com>**20101209114005
1806 Ignore-this: c9013ab63dd0bd62ea045060528550c6
1807 
1808 This is a temporary measure until we fix the bug properly (which is
1809 somewhat tricky, and we think might be easier in the new code
1810 generator).
1811 
1812 For now we get:
1813 
1814 ghc-stage2: sorry! (unimplemented feature or known bug)
1815   (GHC version 7.1 for i386-unknown-linux):
1816         Trying to allocate more than 1040384 bytes.
1817 
1818 See: http://hackage.haskell.org/trac/ghc/ticket/4550
1819 Suggestion: read data from a file instead of having large static data
1820 structures in the code.
1821]
1822[Export the value of the signal used by scheduler (#4504)
1823Dmitry Astapov <dastapov@gmail.com>**20101208183755
1824 Ignore-this: 427bf8c2469283fc7a6f759440d07d87
1825]
1826[Tweak the "sorry" message a bit
1827Simon Marlow <marlowsd@gmail.com>**20101208163212
1828 Ignore-this: aa1ce5bc3c27111548204b740572efbe
1829 
1830 -              "sorry! (this is work in progress)\n"
1831 +              "sorry! (unimplemented feature or known bug)\n"
1832]
1833[:unset settings support
1834Boris Lykah <lykahb@gmail.com>**20101123190132
1835 Ignore-this: 5e97c99238f5d2394592858c34c004d
1836 Added support for settings [args, prog, prompt, editor and stop].
1837 Now :unset supports the same set of options as :set.
1838]
1839[Fix Windows memory freeing: add a check for fb == NULL; fixes trac #4506
1840Ian Lynagh <igloo@earth.li>**20101208152349
1841 Also added a few comments, and a load of code got indented 1 level deeper.
1842]
1843[Fixes for #4512: EventLog.c - provides ability to terminate event logging, Schedule.c - uses them in forkProcess.
1844Dmitry Astapov <dastapov@gmail.com>**20101203133950
1845 Ignore-this: 2da7f215d6c22708a18291a416ba8881
1846]
1847[Make CPPFLAGS variables, as well as CFLAGS and LDFLAGS
1848Ian Lynagh <igloo@earth.li>**20101207010033
1849 Ignore-this: 2fc1ca1422aae1988d0fe1d29a8485d9
1850 This fixes the "does unsetenv return void" test in the unix package on
1851 OS X, if I tell it to make 10.4-compatible binaries. The test uses
1852 CPPFLAGS but not CFLAGS, so it thought it returned int (as it was
1853 in 10.5-mode), but the C compiler (using CFLAGS, so in 10.4 mode)
1854 thought it returned void.
1855 
1856 I also added CONF_LD_OPTS_STAGE$3 to the list of things in LDFLAGS,
1857 which looks like an accidental ommission.
1858]
1859[Add a configure message
1860Ian Lynagh <igloo@earth.li>**20101206215201]
1861[Link even programs containing no Haskell modules with GHC
1862Ian Lynagh <igloo@earth.li>**20101206203329
1863 I don't remember why we made it use gcc instead, but going back to
1864 using ghc doesn't seem to break anything, and should fix the build
1865 on OS X 10.6.
1866]
1867[Correct the stage that the includes/ tools are built in
1868Ian Lynagh <igloo@earth.li>**20101206203125]
1869[Tweak the cleaning of inplace/; fixes trac #4320
1870Ian Lynagh <igloo@earth.li>**20101205212048]
1871[Close .ghci files after reading them; fixes trac #4487
1872Ian Lynagh <igloo@earth.li>**20101205205301]
1873[Fix the behaviour of :history for ticks surrounding top level functions
1874pepeiborra@gmail.com**20101203202346
1875 Ignore-this: 8059d4859c52c0c9a235b937cb8cde1d
1876]
1877[Don't warn of duplicate exports in case of module exports.
1878Michal Terepeta <michal.terepeta@gmail.com>**20101127212116
1879 Ignore-this: ea225d517826f971c400bbb68d1405b8
1880 
1881 But only when the module exports refer to different modules.
1882 See ticket #4478.
1883]
1884[Fix whitespace/layout in RnNames.
1885Michal Terepeta <michal.terepeta@gmail.com>**20101030171303
1886 Ignore-this: 707a7955fc4fc51683cc5a1dfe57f93
1887]
1888[Tell gcc to support back to OS X 10.5
1889Ian Lynagh <igloo@earth.li>**20101203201558
1890 Ignore-this: f02d70e5b9cce50137981c6cb2b62a18
1891]
1892[Make RelaxedLayout off by default
1893Ian Lynagh <igloo@earth.li>**20101202140808
1894 I suspect this is a vary rarely used extension to the official layout
1895 rule.
1896]
1897[Fix up TcInstDcls
1898simonpj@microsoft.com**20101203180758
1899 Ignore-this: 9311aeb4ee67c799704afec90b5982d0
1900 
1901 I really don't know how this module got left out of my last
1902 patch, namely
1903   Thu Dec  2 12:35:47 GMT 2010  simonpj@microsoft.com
1904   * Re-jig simplifySuperClass (again)
1905 
1906 I suggest you don't pull either the patch above, or this
1907 one, unless you really have to.  I'm not fully confident
1908 that it works properly yet.  Ran out of time. Sigh.
1909]
1910[throwTo: report the why_blocked value in the barf()
1911Simon Marlow <marlowsd@gmail.com>**20101203094840
1912 Ignore-this: 3b167c581be1c51dfe3586cc6359e1d0
1913]
1914[handle ThreadMigrating in throwTo() (#4811)
1915Simon Marlow <marlowsd@gmail.com>**20101203094818
1916 Ignore-this: 8ef8cb7fd3b50a27f83c29968131d461
1917 If a throwTo targets a thread that has just been created with
1918 forkOnIO, then it is possible the exception strikes while the thread
1919 is still in the process of migrating.  throwTo() didn't handle this
1920 case, but it's fairly straightforward.
1921]
1922[removeThreadFromQueue: stub out the link field before returning (#4813)
1923Simon Marlow <marlowsd@gmail.com>**20101202160838
1924 Ignore-this: 653ae17bc1120d7f4130da94665002a1
1925]
1926[small tidyup
1927Simon Marlow <marlowsd@gmail.com>**20101126140620
1928 Ignore-this: 70b1d5ed4c81a7b29dd5980a2d84aae1
1929]
1930[Fix a recomp bug: make classes/datatypes depend directly on DFuns (#4469)
1931Simon Marlow <marlowsd@gmail.com>**20101202122349
1932 Ignore-this: 61c765583bb1d97caa88cf9b4f45b87c
1933 And remove the old mechanism of recording dfun uses separately,
1934 because it didn't work.
1935 
1936 This wiki page describes recompilation avoidance and fingerprinting.
1937 I'll update it to describe the new method and what went wrong with the
1938 old method:
1939 
1940 http://hackage.haskell.org/trac/ghc/wiki/Commentary/Compiler/RecompilationAvoidance
1941]
1942[make a panic message more informative and suggest -dcore-lint (see #4534)
1943Simon Marlow <marlowsd@gmail.com>**20101201151706
1944 Ignore-this: 2a10761925d6f9f52675948baa30f7a
1945]
1946[Re-jig simplifySuperClass (again)
1947simonpj@microsoft.com**20101202123547
1948 Ignore-this: fe4062b8988258f6748ebd8fbd6515b5
1949 
1950 This fixes the current loop in T3731, and will fix other
1951 reported loops.  The loops show up when we are generating
1952 evidence for superclasses in an instance declaration.
1953 
1954 The trick is to make the "self" dictionary simplifySuperClass
1955 depend *explicitly* on the superclass we are currently trying
1956 to build.  See Note [Dependencies in self dictionaries] in TcSimplify.
1957 
1958 That in turn means that EvDFunApp needs a dependency-list, used
1959 when chasing dependencies in isGoodRecEv.
1960]
1961[A little refactoring (remove redundant argument passed to isGoodRecEv)
1962simonpj@microsoft.com**20101202123110
1963 Ignore-this: e517c5c12109a230f08dafb4d1e386df
1964]
1965[Make rebindable if-then-else a little more permissive
1966simonpj@microsoft.com**20101202122540
1967 Ignore-this: ddb552cfe307607b42d1e4baf4e3bf21
1968 
1969 See Note [Rebindable syntax for if].  Fixes Trac #4798.
1970 Thanks to Nils Schweinsberg <mail@n-sch.de>
1971]
1972[Improve error message (Trac #4799)
1973simonpj@microsoft.com**20101202102706
1974 Ignore-this: d9896e4d182936de1f256c820b96a8cf
1975]
1976[Fix a nasty bug in RULE matching: Trac #4814
1977simonpj@microsoft.com**20101202102618
1978 Ignore-this: ba058ad46a02bd2faf3a14de93fd19c6
1979 
1980 See Note [Matching lets], which explains it all in detail.
1981 It took me a day to think of a nice way to fix the bug,
1982 but I think the result is quite respectable. Subtle, though.
1983]
1984[Rename -XPArr to -XParallelArrays
1985Ben Lippmeier <benl@ouroborus.net>**20101130075415
1986 Ignore-this: 21b37680a7f25800d1200b59ad0b6b39
1987]
1988[FIX #1845 (unconditional relative branch out of range)
1989pho@cielonegro.org**20101130143014
1990 Ignore-this: df234bd8ad937104c455656fe3c33732
1991 
1992 Don't use mmap on powerpc-apple-darwin as mmap doesn't support
1993 reallocating but we need to allocate jump islands just after each
1994 object images. Otherwise relative branches to jump islands can fail
1995 due to 24-bits displacement overflow.
1996]
1997[rts/Linker.c (loadArchive):
1998pho@cielonegro.org**20101130142700
1999 Ignore-this: bc84f9369ce5c2d289440701b7a3a2ab
2000 
2001 This routine should be aware of Mach-O misalignment of malloc'ed memory regions.
2002]
2003[rts/Linker.c (machoGetMisalignment):
2004pho@cielonegro.org**20101130123355
2005 Ignore-this: 75425600049efd587e9873578e26392f
2006 
2007 Use fseek(3) instead of rewind(3) to move the file position indicator back to the initial position. Otherwise we can't use this function in loadArchive().
2008]
2009[rts/Linker.c (ocFlushInstructionCache):
2010pho@cielonegro.org**20101130121425
2011 Ignore-this: 1e2c207e4b1d17387617ec5d645204b7
2012 
2013 I found this function causes a segfault when ocAllocateSymbolExtras() has allocated a separate memory region for jump islands.
2014]
2015[Remove NewQualifiedOperators
2016Ian Lynagh <igloo@earth.li>**20101201181117
2017 The extension was rejected by Haskell', and deprecated in 7.0.
2018]
2019[fix ref to utils/ext-core, which moved to Hackage (extcore package)
2020Simon Marlow <marlowsd@gmail.com>**20101201092147
2021 Ignore-this: 272a7daaa335ef60bcc645db70b4d68b
2022]
2023[fix floating-point/FFI section: fenv is C99, not POSIX
2024Simon Marlow <marlowsd@gmail.com>**20101201092119
2025 Ignore-this: ce8b3edd428e4f77691dd739b5b4ae73
2026]
2027[Fixed some 'unused vars' warnings
2028keller@cse.unsw.edu.au**20101130013425
2029 Ignore-this: 35790d443faa23b87e4ba442e62376a3
2030]
2031[vectScalarLam handles int, float, and double now
2032keller@cse.unsw.edu.au**20101129231043
2033 Ignore-this: 6d67bdc8dd8577184040e791e6f3d0
2034]
2035[Handling of lets, letrec and case when checking if a lambda expr needs to be vectorised
2036keller@cse.unsw.edu.au**20101115051225
2037 Ignore-this: 1db6ed63d7b3f6d093e019322b407ff7
2038]
2039[Document the behaviour of fenv.h functions with GHC (#4391)
2040Simon Marlow <marlowsd@gmail.com>**20101126125336
2041 Ignore-this: bc4eab49428d567505a28add6fed90f1
2042]
2043[Remove the no-ghci-lib warning in ghc-pkg
2044Ian Lynagh <igloo@earth.li>**20101127235805
2045 GHCi libs are no longer necessary, as we can use the .a or .so versions
2046 instead.
2047]
2048[Add GNU-variant support to the .a parser, and other improvements/tidyups
2049Ian Lynagh <igloo@earth.li>**20101127223945]
2050[Re-indent only
2051Ian Lynagh <igloo@earth.li>**20101127191646]
2052[Improve linker debugging for archive files
2053Ian Lynagh <igloo@earth.li>**20101127190907]
2054[Always enable the archive-loading code
2055Ian Lynagh <igloo@earth.li>**20101127173000
2056 If the GHCi .o lib doesn't exist, load the .a instead
2057]
2058[Inherit the ForceSpecConstr flag in non-recursive nested bindings
2059Roman Leshchinskiy <rl@cse.unsw.edu.au>**20101127125025
2060 Ignore-this: 401391eae25cefcb4afaba2e357decc1
2061 
2062 This makes sure that join points are fully specialised in loops which are
2063 marked as ForceSpecConstr.
2064]
2065[Document -ddump-rule-firings and -ddump-rule-rewrites
2066Roman Leshchinskiy <rl@cse.unsw.edu.au>**20101127123528
2067 Ignore-this: beade2efe0cd767c0ce9d4f45a3380ba
2068]
2069[New flag -dddump-rule-rewrites
2070Roman Leshchinskiy <rl@cse.unsw.edu.au>**20101127122022
2071 Ignore-this: c0ef5b8a199fbd1ef020258d2cde85a3
2072 
2073 Now, -ddump-rule-firings only shows the names of the rules that fired (it would
2074 show "before" and "after" with -dverbose-core2core previously) and
2075 -ddump-rule-rewrites always shows the "before" and "after" bits, even without
2076 -dverbose-core2core.
2077]
2078[Acutally, wild-card variables *can* have occurrences
2079simonpj@microsoft.com**20101126162409
2080 Ignore-this: 544bffed75eeccef03a1097f98524eea
2081 
2082 This patch removes the Lint test, and comments why
2083]
2084[Tidy up the handling of wild-card binders, and make Lint check it
2085simonpj@microsoft.com**20101126133210
2086 Ignore-this: 9e0be9f7867d53046ee5b0e478a0f433
2087 
2088 See Note [WildCard binders] in SimplEnv.  Spotted by Roman.
2089]
2090[Substitution should just substitute, not optimise
2091simonpj@microsoft.com**20101125172356
2092 Ignore-this: 657628d9b6796ceb5f915c43d56e4a06
2093 
2094 This was causing Trac #4524, by optimising
2095      (e |> co)  to   e
2096 on the LHS of a rule.  Result, the template variable
2097 'co' wasn't bound any more.
2098 
2099 Now that substition doesn't optimise, it seems sensible to call
2100 simpleOptExpr rather than substExpr when substituting in the
2101 RHS of rules.  Not a big deal either way.
2102]
2103[Make SpecConstr "look through" identity coercions
2104simonpj@microsoft.com**20101125172138
2105 Ignore-this: c1cc585ed890a7702c33987e971e0af6
2106]
2107[Comment only
2108simonpj@microsoft.com**20101125172011
2109 Ignore-this: 3c7be8791badd00dcca9610ebb8981d1
2110]
2111[White space only
2112simonpj@microsoft.com**20101101080748
2113 Ignore-this: f7133fc6b22ae263c6672543a8534a6f
2114]
2115[Keep a maximum of 6 spare worker threads per Capability (#4262)
2116Simon Marlow <marlowsd@gmail.com>**20101125135729
2117 Ignore-this: a020786569656bf2f3a1717b65d463bd
2118]
2119[Unicide OtherNumber category should be allowed in identifiers (#4373)
2120Simon Marlow <marlowsd@gmail.com>**20101115095444
2121 Ignore-this: e331b6ddb17550163ee91bd283348800
2122]
2123[vectoriser: fix warning
2124Ben Lippmeier <benl@ouroborus.net>**20101126044036
2125 Ignore-this: e1a66bb405bf2f3f56b42c3b13fd4bf3
2126]
2127[vectoriser: fix warning
2128Ben Lippmeier <benl@ouroborus.net>**20101126042950
2129 Ignore-this: df8dd25bcfb3946c2974b13953a2f2c7
2130]
2131[vectoriser: take class directly from the instance tycon
2132Ben Lippmeier <benl@ouroborus.net>**20101126042900
2133 Ignore-this: 626a416717a5a059f39e53f4ec95fc66
2134]
2135[vectoriser: comments only
2136Ben Lippmeier <benl@ouroborus.net>**20101125073201
2137 Ignore-this: 8846ea8895307083bd1ebbc5d7fb1c5
2138]
2139[vectoriser: follow changes in mkClass
2140Ben Lippmeier <benl@ouroborus.net>**20101125062349
2141 Ignore-this: d5018cc022686d4272e126ca9a12283a
2142]
2143[vectoriser: tracing wibbles
2144Ben Lippmeier <benl@ouroborus.net>**20101125062332
2145 Ignore-this: c2024d8f03bc03bee2851f4f1c139fd5
2146]
2147[mkDFunUnfolding wants the type of the dfun to be a PredTy
2148benl@ouroborus.net**20100914062939
2149 Ignore-this: 7aa6e6b140746184cf00355b50c83b66
2150]
2151[vectoriser: fix conflicts
2152Ben Lippmeier <benl@ouroborus.net>**20101125060904
2153 Ignore-this: cc3decab1affada8629ca3818b76b3bf
2154]
2155[Comments and formatting only
2156benl@ouroborus.net**20100914062903
2157 Ignore-this: b0fc25f0952cafd56cc25353936327d4
2158]
2159[Comments and formatting to type environment vectoriser
2160benl@ouroborus.net**20100909080405
2161 Ignore-this: ab8549d53f845c9d82ed9a525fda3906
2162]
2163[Don't mix implicit and explicit layout
2164Ian Lynagh <igloo@earth.li>**20101124231514]
2165[Whitespace only
2166Ian Lynagh <igloo@earth.li>**20101124230655]
2167[Separate NondecreasingIndentation out into its own extension
2168Ian Lynagh <igloo@earth.li>**20101124220507]
2169[Add another GHC layout rule relaxation to RelaxedLayout
2170Ian Lynagh <igloo@earth.li>**20101124205957]
2171[Remove an unused build system variable: GhcDir
2172Ian Lynagh <igloo@earth.li>**20101124140455]
2173[Remove unused build system variable: GhcHasEditline
2174Ian Lynagh <igloo@earth.li>**20101124140415]
2175[Remove unused variables from the build system: HBC, NHC, MKDEPENDHS
2176Ian Lynagh <igloo@earth.li>**20101124140052]
2177[Remove references to Haskell 98
2178Ian Lynagh <igloo@earth.li>**20101123233536
2179 They are no longer right, as we have Haskell' generating new Haskell
2180 standards.
2181]
2182[Tweak a configure test
2183Ian Lynagh <igloo@earth.li>**20101123170621]
2184[Add a configure test for the visibility hidden attribute
2185Ian Lynagh <igloo@earth.li>**20101123170541]
2186[sanity: fix places where we weren't filling fresh memory with 0xaa
2187Simon Marlow <marlowsd@gmail.com>**20101029092843
2188 Ignore-this: 2cb18f7f5afcaf33371aeffce67e218f
2189]
2190[Just some alpha renaming
2191Ian Lynagh <igloo@earth.li>**20101121144455
2192 Ignore-this: d5e807c5470840efc199e29f7d50804c
2193]
2194[Fix bug #3165 (:history throws irrefutable pattern failed)
2195pepeiborra@gmail.com**20101115223623
2196 Ignore-this: 73edf56e502b4d0385bc044133b27946
2197 
2198 I ran across this bug and took the time to fix it, closing
2199 a long time due TODO in InteractiveEval.hs
2200 
2201 Instead of looking around to find the enclosing declaration
2202 of a tick, this patch makes use of the information already collected during the
2203 coverage desugaring phase
2204]
2205[For bindists, build ghc-pwd with stage 1
2206Ian Lynagh <igloo@earth.li>**20101121183520
2207 Ignore-this: a3b5c8b78c81ec1b6d5fbf23da346ff5
2208 rather then the bootstrapping compiler. This fixes problems where the
2209 bootstrapping compiler dynamically links against libraries not on the
2210 target machine.
2211]
2212[Makefile tweak
2213Ian Lynagh <igloo@earth.li>**20101121183342
2214 Ignore-this: cd55a2819c1a5fd36da1bc7a75d2ded1
2215]
2216[Fix a makefile include ordering sanity check
2217Ian Lynagh <igloo@earth.li>**20101121174916
2218 Ignore-this: d0bdd41c4b618944d04ecb4f54fdd0f1
2219]
2220[Add an extension for GHC's layout-rule relaxations
2221Ian Lynagh <igloo@earth.li>**20101120215340
2222 Still TODO: Add the other relaxation (#1060) and update the alternative
2223 layout rule to use the extension.
2224]
2225[Tweak the bindist configure.ac.in
2226Ian Lynagh <igloo@earth.li>**20101120173735]
2227[configure.ac tweaks
2228Ian Lynagh <igloo@earth.li>**20101120170245]
2229[When testing the bindist, tell it where gcc is
2230Ian Lynagh <igloo@earth.li>**20101120155920
2231 The location isn't baked into the bindist, as it may differ from
2232 machine to machine.
2233]
2234[Comments only
2235simonpj@microsoft.com**20101119100153
2236 Ignore-this: 7abd5d965ea805770449d6f8dadbb921
2237]
2238[ForceSpecConstr now forces specialisation even for arguments which aren't scrutinised
2239Roman Leshchinskiy <rl@cse.unsw.edu.au>**20101118212839
2240 Ignore-this: db45721d29a694e53746f8b76513efa4
2241]
2242[Move the superclass generation to the canonicaliser
2243simonpj@microsoft.com**20101118120533
2244 Ignore-this: 5e0e525402a240b709f2b8104c1682b2
2245 
2246 Doing superclass generation in the canonicaliser (rather than
2247 TcInteract) uses less code, and is generally more efficient.
2248 
2249 See Note [Adding superclasses] in TcCanonical.
2250 
2251 Fixes Trac #4497.
2252]
2253[Fix the generation of in-scope variables for IfaceLint check
2254simonpj@microsoft.com**20101118090057
2255 Ignore-this: bbcdba61ddf89d07fe69ca99c2017e3f
2256]
2257[Comments only
2258simonpj@microsoft.com**20101118090034
2259 Ignore-this: fa2936d35a0f7be4e4535ea9e2b7bf7b
2260]
2261[Omit bogus test for -XDeriveFunctor
2262simonpj@microsoft.com**20101118090028
2263 Ignore-this: a534243011809ebbb788b910961601c5
2264 
2265 It was duplicated in the case of 'deriving( Functor )'
2266 and wrong for 'deriving( Foldable )'
2267]
2268[Improve error message on advice from a user
2269simonpj@microsoft.com**20101118085306
2270 Ignore-this: bd4f3858ff24e602e985288f27d536f3
2271 
2272 See Trac #4499
2273]
2274[TAG 2010-11-18
2275Ian Lynagh <igloo@earth.li>**20101118011554
2276 Ignore-this: ccadbe7fadd1148d2ee3caa8c8821ec5
2277]
2278Patch bundle hash:
22797d667ac81aa002e9fff4c782a5b2b3efa058d965