| 1 | Thu Feb 12 15:47:39 CET 2009 Duncan Coutts <duncan@haskell.org> |
|---|
| 2 | * Specify the sparc membar #StoreLoad parameter |
|---|
| 3 | Also fix the related comments |
|---|
| 4 | |
|---|
| 5 | New patches: |
|---|
| 6 | |
|---|
| 7 | [Specify the sparc membar #StoreLoad parameter |
|---|
| 8 | Duncan Coutts <duncan@haskell.org>**20090212144739 |
|---|
| 9 | Also fix the related comments |
|---|
| 10 | ] { |
|---|
| 11 | hunk ./includes/SMP.h 200 |
|---|
| 12 | #elif powerpc_HOST_ARCH |
|---|
| 13 | __asm__ __volatile__ ("msync" : : : "memory"); |
|---|
| 14 | #elif sparc_HOST_ARCH |
|---|
| 15 | - /* Sparc in TSO mode does not require write/write barriers. */ |
|---|
| 16 | - __asm__ __volatile__ ("membar" : : : "memory"); |
|---|
| 17 | + __asm__ __volatile__ ("membar #StoreLoad" : : : "memory"); |
|---|
| 18 | #elif !defined(WITHSMP) |
|---|
| 19 | return; |
|---|
| 20 | #else |
|---|
| 21 | hunk ./includes/SMP.h 217 |
|---|
| 22 | #elif powerpc_HOST_ARCH |
|---|
| 23 | __asm__ __volatile__ ("lwsync" : : : "memory"); |
|---|
| 24 | #elif sparc_HOST_ARCH |
|---|
| 25 | - /* Sparc in TSO mode does not require write/write barriers. */ |
|---|
| 26 | + /* Sparc in TSO mode does not require load/load barriers. */ |
|---|
| 27 | __asm__ __volatile__ ("" : : : "memory"); |
|---|
| 28 | #elif !defined(WITHSMP) |
|---|
| 29 | return; |
|---|
| 30 | } |
|---|
| 31 | |
|---|
| 32 | Context: |
|---|
| 33 | |
|---|
| 34 | [general tidy up |
|---|
| 35 | Simon Marlow <marlowsd@gmail.com>**20090211152429 |
|---|
| 36 | Ignore-this: 9b6bbb08749b372bdd387a25405570f4 |
|---|
| 37 | ] |
|---|
| 38 | [one more bugfix: a load/load memory barrier is required in stealWSDeque_() |
|---|
| 39 | Simon Marlow <marlowsd@gmail.com>**20090211152421 |
|---|
| 40 | Ignore-this: d89fff02d6b8c63272c9171e64d3510b |
|---|
| 41 | ] |
|---|
| 42 | [Fix trac #3001: Biographical profiling segfaults |
|---|
| 43 | Ian Lynagh <igloo@earth.li>**20090211153457 |
|---|
| 44 | We were zeroing the wrong memory |
|---|
| 45 | ] |
|---|
| 46 | [Tweak the mangler; fixes trac #2871 |
|---|
| 47 | Ian Lynagh <igloo@earth.li>**20090211150340 |
|---|
| 48 | It was getting confused by lines like: |
|---|
| 49 | # 9 "C:\Temp\/ghc620_0/ghc620_0.hc" 1 |
|---|
| 50 | ] |
|---|
| 51 | [On sparc, pass -mcpu=v9 when assembling with object splitting enabled |
|---|
| 52 | Ian Lynagh <igloo@earth.li>**20090211141600 |
|---|
| 53 | Fixes trac #2872. |
|---|
| 54 | ] |
|---|
| 55 | [Turn another ASSERT into a WARN (temproraily) |
|---|
| 56 | simonpj@microsoft.com**20090211094028 |
|---|
| 57 | Ignore-this: 8982802501f7966ce482ef360aac6ec0 |
|---|
| 58 | |
|---|
| 59 | Fix Trac #3011 by temporarily making it only a WARN if we assign twice |
|---|
| 60 | to the same unification variable. |
|---|
| 61 | |
|---|
| 62 | |
|---|
| 63 | ] |
|---|
| 64 | [Improve documentation for LANGUAGE pragma (esp wrt cpp) |
|---|
| 65 | simonpj@microsoft.com**20090211093939 |
|---|
| 66 | Ignore-this: 2c690e39766bb9c49c0e7bf8faecad47 |
|---|
| 67 | ] |
|---|
| 68 | [Don't use the absolute path to the bindist tarball |
|---|
| 69 | Ian Lynagh <igloo@earth.li>**20090210215215 |
|---|
| 70 | On Windows, we end up doing something like |
|---|
| 71 | rsync c:/build/ghc-6.10.1-unknown-mingw32.tar.bz2 haskell.org:dist |
|---|
| 72 | and it thinks that it is meant to get the file from the host called "c". |
|---|
| 73 | Now we just do |
|---|
| 74 | rsync ghc-6.10.1-unknown-mingw32.tar.bz2 haskell.org:dist |
|---|
| 75 | so rsync understand what we mean. |
|---|
| 76 | ] |
|---|
| 77 | [Fix cleaning and installing the libraries |
|---|
| 78 | Ian Lynagh <igloo@earth.li>**20090210225538 |
|---|
| 79 | When cleaning or installing, we need to ignore what $stage is, and |
|---|
| 80 | just clean/install all the libraries. |
|---|
| 81 | ] |
|---|
| 82 | [scheduleYield(): check the wakeup queue before yielding |
|---|
| 83 | Simon Marlow <marlowsd@gmail.com>**20090209112536 |
|---|
| 84 | Ignore-this: d4aaf83d79ad8ca3ac2d904234eef599 |
|---|
| 85 | ] |
|---|
| 86 | [Improvements to the "can't find module" error message (#2980) |
|---|
| 87 | Simon Marlow <marlowsd@gmail.com>**20090206165743 |
|---|
| 88 | Ignore-this: 2de565e20f68ebdc3865df7391c81437 |
|---|
| 89 | If the module was found in multiple hidden packages, we list them all. |
|---|
| 90 | |
|---|
| 91 | Could not find module `Data.Generics': |
|---|
| 92 | it is a member of the hidden package `base-3.0.3.0' |
|---|
| 93 | it is a member of the hidden package `syb' |
|---|
| 94 | Use -v to see a list of the files searched for. |
|---|
| 95 | ] |
|---|
| 96 | [build fix: add -I../rts/parallel |
|---|
| 97 | Simon Marlow <marlowsd@gmail.com>**20090206145921 |
|---|
| 98 | Ignore-this: b4ab2760dd111b790421cf451289681f |
|---|
| 99 | ] |
|---|
| 100 | [crucial bugfix: add a store/load memory barrier to popWSDeque() |
|---|
| 101 | Simon Marlow <marlowsd@gmail.com>**20090206130804 |
|---|
| 102 | Ignore-this: 57d044afb7c635af2948d24d9c43a23f |
|---|
| 103 | ] |
|---|
| 104 | [bugfix: an unsigned comparison should be signed |
|---|
| 105 | Simon Marlow <marlowsd@gmail.com>**20090206130745 |
|---|
| 106 | Ignore-this: 981510f94dcb81e5896703f610b933e5 |
|---|
| 107 | ] |
|---|
| 108 | [tiny cleanup |
|---|
| 109 | Simon Marlow <marlowsd@gmail.com>**20090206130715 |
|---|
| 110 | Ignore-this: 9497f8f6fbce2d0c23fd1d0eee4cdeda |
|---|
| 111 | ] |
|---|
| 112 | [add debugging code and comments |
|---|
| 113 | Simon Marlow <marlowsd@gmail.com>**20090206130609 |
|---|
| 114 | Ignore-this: 5f0e1e3fa0148da079f13eb07430c09b |
|---|
| 115 | ] |
|---|
| 116 | [add an assertion |
|---|
| 117 | Simon Marlow <marlowsd@gmail.com>**20090206130338 |
|---|
| 118 | Ignore-this: f4c0f539142c0dfdc57c70d1c6136f10 |
|---|
| 119 | ] |
|---|
| 120 | [add a single-threaded version of cas() |
|---|
| 121 | Simon Marlow <marlowsd@gmail.com>**20090206130130 |
|---|
| 122 | Ignore-this: 80d5e7a3c35182d7d87e95c5c4096821 |
|---|
| 123 | ] |
|---|
| 124 | [add a store/load memory barrier |
|---|
| 125 | Simon Marlow <marlowsd@gmail.com>**20090206130115 |
|---|
| 126 | Ignore-this: e0bc8f61877868ec8c2ccd9dee8f956d |
|---|
| 127 | ] |
|---|
| 128 | [Refactor the spark queue implementation into a generic work-stealing deque |
|---|
| 129 | Simon Marlow <marlowsd@gmail.com>**20090205124648 |
|---|
| 130 | Ignore-this: 1a7ee74388f30301d154d050d853a7a9 |
|---|
| 131 | So we can use this abstraction elsewhere in the RTS |
|---|
| 132 | ] |
|---|
| 133 | [Handle the case where setitimer(ITIMER_VIRTUAL) is not always available |
|---|
| 134 | Ian Lynagh <igloo@earth.li>**20090208191431 |
|---|
| 135 | Patch from sthibaul. Fixes trac #2883. |
|---|
| 136 | ] |
|---|
| 137 | [Correct an IsFunction that should be IsData |
|---|
| 138 | Ian Lynagh <igloo@earth.li>**20090207005834] |
|---|
| 139 | [Fix calling maths functions when compiling via C |
|---|
| 140 | Ian Lynagh <igloo@earth.li>**20090206223119] |
|---|
| 141 | [Add a panic to fix the build on amd64/Linux; to be fixed properly later |
|---|
| 142 | Ian Lynagh <igloo@earth.li>**20090206153135] |
|---|
| 143 | [Fix the build on OS X: only understands .space, not .skip |
|---|
| 144 | Ian Lynagh <igloo@earth.li>**20090206151203] |
|---|
| 145 | [Fix building with GHC 6.8 |
|---|
| 146 | Ian Lynagh <igloo@earth.li>**20090206143432] |
|---|
| 147 | [Fix the build on amd64/Linux |
|---|
| 148 | Ian Lynagh <igloo@earth.li>**20090206143420] |
|---|
| 149 | [When generating C, don't pretend functions are data |
|---|
| 150 | Ian Lynagh <igloo@earth.li>**20090206140249 |
|---|
| 151 | We used to generated things like: |
|---|
| 152 | extern StgWordArray (newCAF) __attribute__((aligned (8))); |
|---|
| 153 | ((void (*)(void *))(W_)&newCAF)((void *)R1.w); |
|---|
| 154 | (which is to say, pretend that newCAF is some data, then cast it to a |
|---|
| 155 | function and call it). |
|---|
| 156 | This goes wrong on at least IA64, where: |
|---|
| 157 | A function pointer on the ia64 does not point to the first byte of |
|---|
| 158 | code. Intsead, it points to a structure that describes the function. |
|---|
| 159 | The first quadword in the structure is the address of the first byte |
|---|
| 160 | of code |
|---|
| 161 | so we end up dereferencing function pointers one time too many, and |
|---|
| 162 | segfaulting. |
|---|
| 163 | ] |
|---|
| 164 | [NCG: Validate fixes |
|---|
| 165 | Ben.Lippmeier@anu.edu.au**20090205080624] |
|---|
| 166 | [NCG: Split RegAllocInfo into arch specific modules |
|---|
| 167 | Ben.Lippmeier@anu.edu.au**20090204055126] |
|---|
| 168 | [NCG: Move RegLiveness -> RegAlloc.Liveness |
|---|
| 169 | Ben.Lippmeier@anu.edu.au**20090204035250] |
|---|
| 170 | [NCG: Rename MachRegs, MachInstrs -> Regs, Instrs to reflect arch specific naming |
|---|
| 171 | Ben.Lippmeier@anu.edu.au**20090204034107] |
|---|
| 172 | [NCG: Split MachRegs.hs into arch specific modules |
|---|
| 173 | Ben.Lippmeier@anu.edu.au**20090204030729] |
|---|
| 174 | [NCG: Fix validate |
|---|
| 175 | Ben.Lippmeier@anu.edu.au**20090205030642] |
|---|
| 176 | [SPARC NCG: Fix some haddock problems. |
|---|
| 177 | Ben.Lippmeier@anu.edu.au**20090204043802] |
|---|
| 178 | [SPARC NCG: Add Pwr callish mach op |
|---|
| 179 | Ben.Lippmeier@anu.edu.au**20090204000905] |
|---|
| 180 | [NCG: Split MachInstrs into arch specific modules |
|---|
| 181 | Ben.Lippmeier@anu.edu.au**20090203081327] |
|---|
| 182 | [NCG: Move the graph allocator into its own dir |
|---|
| 183 | Ben.Lippmeier@anu.edu.au**20090203071411] |
|---|
| 184 | [SPARC NCG: Update cabal file |
|---|
| 185 | Ben.Lippmeier@anu.edu.au**20090203062746] |
|---|
| 186 | [SPARC NCG: Give regs o0-o5 back to the allocator |
|---|
| 187 | Ben.Lippmeier@anu.edu.au**20090203062433] |
|---|
| 188 | [NCG: Split out joinToTargets from linear alloctor into its own module. |
|---|
| 189 | Ben.Lippmeier@anu.edu.au**20090203040540 |
|---|
| 190 | |
|---|
| 191 | * Also fix a nasty bug when creating fixup code that has a cyclic |
|---|
| 192 | register movement graph. |
|---|
| 193 | ] |
|---|
| 194 | [NCG: Split linear allocator into separate modules. |
|---|
| 195 | Ben.Lippmeier@anu.edu.au**20090202055301] |
|---|
| 196 | [SPARC NCG: Keep track of destinations when doing a tabled jump |
|---|
| 197 | Ben.Lippmeier@anu.edu.au**20090123052247] |
|---|
| 198 | [SPARC NCG: Do general 64 bit addition and conversion |
|---|
| 199 | Ben.Lippmeier@anu.edu.au**20090123035152] |
|---|
| 200 | [SPARC NCG: Don't need a write barrier for store synchronisation on SPARC under TSO. |
|---|
| 201 | Ben.Lippmeier@anu.edu.au**20090123005051] |
|---|
| 202 | [SPARC NCG: Use .skip instead of .space in assembler |
|---|
| 203 | Ben.Lippmeier@anu.edu.au**20090122225150 |
|---|
| 204 | |
|---|
| 205 | - In the GNU assembler they mean the same thing |
|---|
| 206 | - The Solaris assembler only has .skip |
|---|
| 207 | |
|---|
| 208 | ] |
|---|
| 209 | [Check -XGADTs in (a) type family decls (b) pattern matches |
|---|
| 210 | simonpj@microsoft.com**20090204150919 |
|---|
| 211 | Ignore-this: 19a6268814440493eea436c48daa8414 |
|---|
| 212 | |
|---|
| 213 | Following Trac #2905, we now require -XGADTs for *pattern matches* on |
|---|
| 214 | GADTs, not just on *definitions*. |
|---|
| 215 | |
|---|
| 216 | Also I found that -XGADTs wasn't being checked when declaring type families, |
|---|
| 217 | so I fixed that too. |
|---|
| 218 | |
|---|
| 219 | ] |
|---|
| 220 | [Improve error reports for kind checking (Trac #2994) |
|---|
| 221 | simonpj@microsoft.com**20090204150736 |
|---|
| 222 | Ignore-this: 402fe9f025abf8e2a3088383c23a89f6 |
|---|
| 223 | |
|---|
| 224 | I followed the suggestion in Trac #2994, which took longer than I |
|---|
| 225 | expected. As usual I did a bit of tidying up at the same time, |
|---|
| 226 | and improved a few other error reports. |
|---|
| 227 | |
|---|
| 228 | ] |
|---|
| 229 | [Further wibbles to 'deriving' for functor-like things |
|---|
| 230 | simonpj@microsoft.com**20090204150625 |
|---|
| 231 | Ignore-this: 1a69dfc25f741148b5b817aa66803d5c |
|---|
| 232 | ] |
|---|
| 233 | [leave out rts/ from include-dirs in the inplace rts package |
|---|
| 234 | Simon Marlow <marlowsd@gmail.com>**20090204104748 |
|---|
| 235 | Ignore-this: 3a5c7e53121421600aa21a53b57cc9fb |
|---|
| 236 | it shouldn't be there, and might hide bugs |
|---|
| 237 | ] |
|---|
| 238 | [Fix Trac #2999: change an ASSERT to a WARN |
|---|
| 239 | simonpj@microsoft.com**20090204083800 |
|---|
| 240 | Ignore-this: db6fdc200a06ba5f067d567ea64f89e1 |
|---|
| 241 | |
|---|
| 242 | A bug in the constraint simplifier means that an equality can be solved |
|---|
| 243 | twice. It's harmless, and will go away with the new constraint simplifier. |
|---|
| 244 | Hence warning, to avoid unnecessary outright failure on eg Trac #2999. |
|---|
| 245 | |
|---|
| 246 | ] |
|---|
| 247 | [Improve transferPolyIdInfo for value-arg abstraction |
|---|
| 248 | simonpj@microsoft.com**20090204082534 |
|---|
| 249 | Ignore-this: 687def702522c3516050de1e14e5219f |
|---|
| 250 | |
|---|
| 251 | If we float a binding out of a *value* lambda, the fixing-up of IdInfo |
|---|
| 252 | is a bit more complicated than before. Since in principle FloatOut |
|---|
| 253 | can do this (and thus can do full lambda lifting), it's imporrtant |
|---|
| 254 | that transferPolyIdInfo does the Right Thing. |
|---|
| 255 | |
|---|
| 256 | This doensn't matter unless you use FloatOut's abilty to lambda-lift, |
|---|
| 257 | which GHC mostly doesn't, yet. But Max used it and tripped over this bug. |
|---|
| 258 | |
|---|
| 259 | ] |
|---|
| 260 | [Two small improvements to LiberateCase |
|---|
| 261 | simonpj@microsoft.com**20090204081919 |
|---|
| 262 | Ignore-this: ca41d8d9ef1b409b32761b1a69bd1400 |
|---|
| 263 | |
|---|
| 264 | Max Bolingbroke suggested these two small improvements to LiberateCase |
|---|
| 265 | (most of the size increase is comments :-)): |
|---|
| 266 | |
|---|
| 267 | a) Do LiberateCase on small functions even if they are mutually recursive |
|---|
| 268 | See Note [Small enough] |
|---|
| 269 | |
|---|
| 270 | b) Don't do LiberateCase on functions for which it'd be fruitless, |
|---|
| 271 | namely when a free varible is scrutinised *outside* the function |
|---|
| 272 | See Note [Avoiding fruitless liberate-case] |
|---|
| 273 | |
|---|
| 274 | There is virtually no effect on nofib, but Max tripped over cases |
|---|
| 275 | where it mattered slightly. |
|---|
| 276 | |
|---|
| 277 | |
|---|
| 278 | ] |
|---|
| 279 | [Robustify lookupFamInstEnv, plus some refactoring |
|---|
| 280 | simonpj@microsoft.com**20090115134818 |
|---|
| 281 | Ignore-this: 493fdbd370a714bf9677b16d2ba533d7 |
|---|
| 282 | |
|---|
| 283 | This patch deals with the following remark |
|---|
| 284 | |
|---|
| 285 | Suppose we have |
|---|
| 286 | type family T a :: * -> * |
|---|
| 287 | type instance T Int = [] |
|---|
| 288 | |
|---|
| 289 | and now we encounter the type (T Int Bool). If we call |
|---|
| 290 | lookupFamInstEnv on (T Int Bool) we'll fail, because T has arity 1. |
|---|
| 291 | Indeed, I *think* it's a precondition of lookupFamInstEnv that the |
|---|
| 292 | supplied types exactly match the arity of the type function. But |
|---|
| 293 | that precondition is neither stated, nor is there an assertion to |
|---|
| 294 | check it. |
|---|
| 295 | |
|---|
| 296 | With this patch, lookupFamInstEnv can take "extra" type arguments in |
|---|
| 297 | the over-saturated case, and does the Right Thing. |
|---|
| 298 | |
|---|
| 299 | There was a nearly-identical function lookupFamInstEnvUnify, which |
|---|
| 300 | required the precisely analogous change, so I took the opportunity |
|---|
| 301 | to combine the two into one function, so that bugs can be fixed in one |
|---|
| 302 | place. This was a bit harder than I expected, but I think the result |
|---|
| 303 | is ok. The conflict-decision function moves from FamInst to FamInstEnv. |
|---|
| 304 | Net lines code decreases, although there are more comments. |
|---|
| 305 | |
|---|
| 306 | |
|---|
| 307 | |
|---|
| 308 | ] |
|---|
| 309 | [Robustify lookupFamInstEnv |
|---|
| 310 | simonpj@microsoft.com**20090114140117 |
|---|
| 311 | Ignore-this: ee312b2b59155102d88397a33c591ad2 |
|---|
| 312 | |
|---|
| 313 | Suppose we have |
|---|
| 314 | type family T a :: * -> * |
|---|
| 315 | type instance T Int = [] |
|---|
| 316 | |
|---|
| 317 | and now we encounter the type (T Int Bool). That is perfectly |
|---|
| 318 | fine, even though T is over-saturated here. |
|---|
| 319 | |
|---|
| 320 | This patch makes lookupFamInstEnv robust to such over-saturation. |
|---|
| 321 | Previously one caller (TcTyFuns.tcUnfoldSynFamInst) dealt with |
|---|
| 322 | the over-saturation case, but the others did not. It's better |
|---|
| 323 | to desl with the issue at the root, in lookupFamInstEnv itself. |
|---|
| 324 | |
|---|
| 325 | ] |
|---|
| 326 | [Improve trace message |
|---|
| 327 | simonpj@microsoft.com**20090113175806 |
|---|
| 328 | Ignore-this: 2276ebc89246553cbb6a1a4cd7c76fd9 |
|---|
| 329 | ] |
|---|
| 330 | [Build dph with the stage2 compiler |
|---|
| 331 | Ian Lynagh <igloo@earth.li>**20090203213613 |
|---|
| 332 | It will use TH, so needs to be built with stage2. |
|---|
| 333 | ] |
|---|
| 334 | [Optimise writing out the .s file |
|---|
| 335 | Simon Marlow <marlowsd@gmail.com>**20090202145013 |
|---|
| 336 | I noticed while working on the new IO library that GHC was writing out |
|---|
| 337 | the .s file in lots of little chunks. It turns out that this is a |
|---|
| 338 | result of using multiple printDocs to avoid space leaks in the NCG, |
|---|
| 339 | where each printDoc is finishing up with an hFlush. |
|---|
| 340 | |
|---|
| 341 | What's worse, is that this makes poor use of the optimisation inside |
|---|
| 342 | printDoc that uses its own buffering to avoid hitting the Handle all |
|---|
| 343 | the time. |
|---|
| 344 | |
|---|
| 345 | So I hacked around this by making the buffering optimisation inside |
|---|
| 346 | Pretty visible from the outside, for use in the NCG. The changes are |
|---|
| 347 | quite small. |
|---|
| 348 | ] |
|---|
| 349 | [better error message for missing package-qualified modules in ghc -M |
|---|
| 350 | Simon Marlow <marlowsd@gmail.com>**20090123142001] |
|---|
| 351 | [add wiki commentary links |
|---|
| 352 | Simon Marlow <marlowsd@gmail.com>**20090130110844 |
|---|
| 353 | Ignore-this: 3f27b426bc5ad54157edc06a421e28bf |
|---|
| 354 | ] |
|---|
| 355 | [Force the result of user-defined commands |
|---|
| 356 | Simon Marlow <marlowsd@gmail.com>**20090130091919 |
|---|
| 357 | Ignore-this: f756d00cc062072e1945d63cfbbeb98 |
|---|
| 358 | so that exceptions are reported with "*** Exception" instead of as a panic. |
|---|
| 359 | ] |
|---|
| 360 | [Improve error reporting for precedence errors |
|---|
| 361 | simonpj@microsoft.com**20090202164450 |
|---|
| 362 | Ignore-this: 493643a40c119ba6ad54d0f220dc4606 |
|---|
| 363 | |
|---|
| 364 | Adopt the suggestion of Trac #2993, and tidy up the reporting of |
|---|
| 365 | precedence parsing errors somewhat. |
|---|
| 366 | |
|---|
| 367 | ] |
|---|
| 368 | [Add the ability to derive instances of Functor, Foldable, Traversable |
|---|
| 369 | simonpj@microsoft.com**20090202134829 |
|---|
| 370 | Ignore-this: f3013fefdd65f75fb5060ef0e002f40e |
|---|
| 371 | |
|---|
| 372 | This patch is a straightforward extension of the 'deriving' mechanism. |
|---|
| 373 | The ability to derive classes Functor, Foldable, Traverable is controlled |
|---|
| 374 | by a single flag -XDeriveFunctor. (Maybe that's a poor name.) |
|---|
| 375 | |
|---|
| 376 | Still to come: documentation |
|---|
| 377 | |
|---|
| 378 | Thanks to twanvl for developing the patch |
|---|
| 379 | |
|---|
| 380 | |
|---|
| 381 | ] |
|---|
| 382 | [Comments about injecting implicit bindings |
|---|
| 383 | simonpj@microsoft.com**20090130175403 |
|---|
| 384 | Ignore-this: 7aa1a69f5a16811272bed0683234aca3 |
|---|
| 385 | ] |
|---|
| 386 | [Warn in configure if it looks like make 3.80 is about to be used |
|---|
| 387 | Ian Lynagh <igloo@earth.li>**20090201203505 |
|---|
| 388 | We get caught by |
|---|
| 389 | http://savannah.gnu.org/bugs/index.php?1516 |
|---|
| 390 | $(eval ...) inside conditionals causes errors |
|---|
| 391 | with make 3.80, so warn the user if it looks like they're about to |
|---|
| 392 | try to use it. |
|---|
| 393 | ] |
|---|
| 394 | [Fix Trac #2985: generating superclasses and recursive dictionaries |
|---|
| 395 | simonpj@microsoft.com**20090130152738 |
|---|
| 396 | Ignore-this: 921ab14e850085ddbe545b078e02120b |
|---|
| 397 | |
|---|
| 398 | The Note [Recursive instances and superclases] explains the subtle |
|---|
| 399 | issues to do with generating the bindings for superclasses when |
|---|
| 400 | we compile an instance declaration, at least if we want to do the |
|---|
| 401 | clever "recursive superclass" idea from the SYB3 paper. |
|---|
| 402 | |
|---|
| 403 | The old implementation of tcSimplifySuperClasses stumbled when |
|---|
| 404 | type equalities entered the picture (details in the Note); this |
|---|
| 405 | patch fixes the problem using a slightly hacky trick. When we |
|---|
| 406 | re-engineer the constraint solver we'll want to keep an eye on |
|---|
| 407 | this. |
|---|
| 408 | |
|---|
| 409 | Probably worth merging to the 6.10 branch. |
|---|
| 410 | |
|---|
| 411 | |
|---|
| 412 | ] |
|---|
| 413 | [White space only |
|---|
| 414 | simonpj@microsoft.com**20090130152705 |
|---|
| 415 | Ignore-this: fdc9c862fa91a57bdb81b7370eb482bd |
|---|
| 416 | ] |
|---|
| 417 | [Two more wibbles to CorePrep (fixes HTTP package and DPH) |
|---|
| 418 | simonpj@microsoft.com**20090129131954 |
|---|
| 419 | Ignore-this: ee42b5f5a73a5277b5fd0e8c679e8fbe |
|---|
| 420 | |
|---|
| 421 | Ensuring that |
|---|
| 422 | a) lambdas show up only on the RHSs of binding after CorePrep |
|---|
| 423 | b) the arity of a binding exactly matches the maifest lambdas |
|---|
| 424 | is surprisingly tricky. |
|---|
| 425 | |
|---|
| 426 | I got it wrong (again) in my recent CorePrep shuffling, which broke |
|---|
| 427 | packages HTTP and DPH. This patch fixes both. |
|---|
| 428 | |
|---|
| 429 | ] |
|---|
| 430 | [Remove the doc/ contents from the GMP tarball |
|---|
| 431 | Ian Lynagh <igloo@earth.li>**20090128200749 |
|---|
| 432 | They are GFDLed, which causes problems for Debian |
|---|
| 433 | ] |
|---|
| 434 | [#2973: we should virtualise the CWD inside the GHC API, not in the client |
|---|
| 435 | Simon Marlow <marlowsd@gmail.com>**20090127121648 |
|---|
| 436 | Ignore-this: 5d57181d25a0661ad20fa48154f4a80 |
|---|
| 437 | The problem is that we install the client's CWD before calling |
|---|
| 438 | runStmt, but runStmt has to load modules before running the code. We |
|---|
| 439 | need to install the CWD just before running the code instead, which |
|---|
| 440 | means it has to be done inside runStmt (and resume). |
|---|
| 441 | ] |
|---|
| 442 | [Fix detection of i386 vs. x86_64 for -pc-solaris |
|---|
| 443 | Simon Marlow <marlowsd@gmail.com>**20090127095343 |
|---|
| 444 | Ignore-this: b415138105477e7edab96994babbe6d2 |
|---|
| 445 | From #2951 |
|---|
| 446 | ] |
|---|
| 447 | [Implement #2191 (traceCcs# -- prints CCS of a value when available -- take 3) |
|---|
| 448 | Samuel Bronson <naesten@gmail.com>**20090127084825 |
|---|
| 449 | Ignore-this: ede3f18c70cfb7979ef21d7e8077dad6 |
|---|
| 450 | In this version, I untag R1 before using it, and even enter R2 at the |
|---|
| 451 | end rather than simply returning it (which didn't work right when R2 |
|---|
| 452 | was a thunk). |
|---|
| 453 | ] |
|---|
| 454 | [add comment for ASSERT_LOCK_HELD() |
|---|
| 455 | Simon Marlow <marlowsd@gmail.com>**20090126140030 |
|---|
| 456 | Ignore-this: c3ce1e8df9d94eb92a17f4f58c496a41 |
|---|
| 457 | ] |
|---|
| 458 | [Fix #2961: we lost some of the generated code for stack args in genCCall |
|---|
| 459 | Simon Marlow <marlowsd@gmail.com>**20090126150209 |
|---|
| 460 | Ignore-this: 77de911bfc98ecca566f1744dfe75a7b |
|---|
| 461 | A real bug in the x86_64 native code gen: nice! |
|---|
| 462 | |
|---|
| 463 | This bug would have been caught by -Wall, and I would have gone though |
|---|
| 464 | and Walled this file but I know Ben is hacking on this file quite |
|---|
| 465 | heavily and I don't want to create undue conflicts. Ben: it would be |
|---|
| 466 | nice to enable -Wall here when you have time. |
|---|
| 467 | ] |
|---|
| 468 | [Make the libffi patch files portable |
|---|
| 469 | Ian Lynagh <igloo@earth.li>**20090123180015 |
|---|
| 470 | Solaris's patch can't apply them if the lines beginning "---" aren't |
|---|
| 471 | preceeded by a "diff -ur foo bar" line. |
|---|
| 472 | ] |
|---|
| 473 | [SPARC NCG: Also do misaligned reads (this time for sure!) |
|---|
| 474 | Ben.Lippmeier@anu.edu.au**20090122092156] |
|---|
| 475 | [SPARC NCG: Also do misaligned reads |
|---|
| 476 | Ben.Lippmeier@anu.edu.au**20090121232423] |
|---|
| 477 | [When converting TH syntax to GHC syntax, need to put sections in parentheses |
|---|
| 478 | Ian Lynagh <igloo@earth.li>**20090121141706 |
|---|
| 479 | Fixes trac #2956 |
|---|
| 480 | ] |
|---|
| 481 | [SPARC NCG: Add a SPARC version of rts_mkInt64 that handles misaligned closure payloads. |
|---|
| 482 | Ben.Lippmeier@anu.edu.au**20090121052334] |
|---|
| 483 | [SPARC NCG: Reenable out of line 32 bit float ops |
|---|
| 484 | Ben.Lippmeier@anu.edu.au**20090121034716] |
|---|
| 485 | [SPARC NCG: Clean up formatting and add comments in genCCall |
|---|
| 486 | Ben.Lippmeier@anu.edu.au**20090121025549] |
|---|
| 487 | [SPARC NCG: Fix format problem when converting float to int |
|---|
| 488 | Ben.Lippmeier@anu.edu.au**20090121012624] |
|---|
| 489 | [SPARC NCG: fill branch delay slot after tabled jump (doh!) |
|---|
| 490 | Ben.Lippmeier@anu.edu.au**20090121003729] |
|---|
| 491 | [SPARC NCG: Add tabled switch |
|---|
| 492 | Ben.Lippmeier@anu.edu.au**20090120214914] |
|---|
| 493 | [SPARC NCG: Fix 64bit integers returned from ccalls |
|---|
| 494 | Ben.Lippmeier@anu.edu.au**20090120090617] |
|---|
| 495 | [#2875: Correct SYB's representation of Char |
|---|
| 496 | 'Jose Pedro Magalhaes <jpm@cs.uu.nl>'**20090119112321] |
|---|
| 497 | [Fix #2759: add ability to serialize Rational |
|---|
| 498 | 'Jose Pedro Magalhaes <jpm@cs.uu.nl>'**20081209125551] |
|---|
| 499 | [SPARC NCG: Fix warnings |
|---|
| 500 | Ben.Lippmeier@anu.edu.au**20090120075100] |
|---|
| 501 | [SPARC NCG: Remove a comment that was confusing haddock |
|---|
| 502 | Ben.Lippmeier@anu.edu.au**20090116011853] |
|---|
| 503 | [SPARC NCG: ppr 64 bit store sizes |
|---|
| 504 | Ben.Lippmeier@anu.edu.au**20090120074000] |
|---|
| 505 | [SPARC NCG: Fix generation of 64 bit ops on 32 bit sparc |
|---|
| 506 | Ben.Lippmeier@anu.edu.au**20090120071536] |
|---|
| 507 | [SPARC NCG: Add support for hardware divide |
|---|
| 508 | Ben.Lippmeier@anu.edu.au**20090120052113] |
|---|
| 509 | [SPARC NCG: Redo code for integer sign extension |
|---|
| 510 | Ben.Lippmeier@anu.edu.au**20090115084105] |
|---|
| 511 | [SPARC NCG: Fix signed/unsigned operand format bug |
|---|
| 512 | Ben.Lippmeier@anu.edu.au**20090115080004] |
|---|
| 513 | [More fixes to the SPARC native code generator |
|---|
| 514 | Ben.Lippmeier@anu.edu.au**20090115055727 |
|---|
| 515 | |
|---|
| 516 | * Fix loading of 64bit floats |
|---|
| 517 | * Put SRT and other read only static data in the .text segment |
|---|
| 518 | ] |
|---|
| 519 | [Start fixing the SPARC native code generator |
|---|
| 520 | Ben.Lippmeier@anu.edu.au**20090114054416 |
|---|
| 521 | |
|---|
| 522 | * Use BlockIds in branch instructions instead of Imms. |
|---|
| 523 | * Assign FP values returned from C calls to the right regs |
|---|
| 524 | * Fix loading of F32s |
|---|
| 525 | * Add a SPARC version of the FreeRegs map to the linear allcator. |
|---|
| 526 | ] |
|---|
| 527 | [Fix some holes in the SPARC native code generator. |
|---|
| 528 | Ben.Lippmeier@anu.edu.au**20090112063310 |
|---|
| 529 | |
|---|
| 530 | This makes about half the tests in codeGen/should_run work. |
|---|
| 531 | ] |
|---|
| 532 | [Untag closure pointers before trying to print them. |
|---|
| 533 | Ben.Lippmeier@anu.edu.au**20090112053421 |
|---|
| 534 | |
|---|
| 535 | In RTS tracing code, need to untag the pointer before trying |
|---|
| 536 | to load the info table in printClosure() |
|---|
| 537 | ] |
|---|
| 538 | [Add missing documention of -Da DEBUG: apply flag to RTS help. |
|---|
| 539 | Ben.Lippmeier@anu.edu.au**20090112005625] |
|---|
| 540 | [Better panic message in RegAllocLinear |
|---|
| 541 | Ben.Lippmeier@anu.edu.au**20090110025802] |
|---|
| 542 | [Make the SPARC NCG compile again - it's still broken though. |
|---|
| 543 | Ben.Lippmeier@anu.edu.au**20090110014418] |
|---|
| 544 | [Enable the native code generator for SPARC |
|---|
| 545 | Ben.Lippmeier@anu.edu.au**20090105070429] |
|---|
| 546 | [Always use PTHREAD_MUTEX_ERRORCHECK to create mutexes when -DDEBUG |
|---|
| 547 | Ian Lynagh <igloo@earth.li>**20090118193328 |
|---|
| 548 | Linux defines PTHREAD_MUTEX_ERRORCHECK = PTHREAD_MUTEX_ERRORCHECK_NP |
|---|
| 549 | anyway, so there's no need to special-case it. |
|---|
| 550 | ] |
|---|
| 551 | [Use error-checking mutexes on all platforms when DEBUG is on |
|---|
| 552 | Ian Lynagh <igloo@earth.li>**20090117215931 |
|---|
| 553 | Otherwise ASSERT_LOCK_HELD will cause deadlocks |
|---|
| 554 | ] |
|---|
| 555 | [Reinstate: Always check the result of pthread_mutex_lock() and pthread_mutex_unlock(). |
|---|
| 556 | Ian Lynagh <igloo@earth.li>**20090117200955 |
|---|
| 557 | Sun Jan 4 19:24:43 GMT 2009 Matthias Kilian <kili@outback.escape.de> |
|---|
| 558 | Don't check pthread_mutex_*lock() only on Linux and/or only if DEBUG |
|---|
| 559 | is defined. The return values of those functions are well defined |
|---|
| 560 | and should be supported on all operation systems with pthreads. The |
|---|
| 561 | checks are cheap enough to do them even in the default build (without |
|---|
| 562 | -DDEBUG). |
|---|
| 563 | |
|---|
| 564 | While here, recycle an unused macro ASSERT_LOCK_NOTHELD, and let |
|---|
| 565 | the debugBelch part enabled with -DLOCK_DEBUG work independently |
|---|
| 566 | of -DDEBUG. |
|---|
| 567 | ] |
|---|
| 568 | [Initialise and deinitialise the file_lock_mutex |
|---|
| 569 | Ian Lynagh <igloo@earth.li>**20090117023947] |
|---|
| 570 | [Create package.conf when installing a bindist |
|---|
| 571 | Ian Lynagh <igloo@earth.li>**20090118110654] |
|---|
| 572 | [validate fix on 32-bit |
|---|
| 573 | Simon Marlow <marlowsd@gmail.com>**20090114162834] |
|---|
| 574 | [fix validate on Windows |
|---|
| 575 | Simon Marlow <marlowsd@gmail.com>**20090114155842] |
|---|
| 576 | [UNDO: Always check the result of pthread_mutex_lock() and pthread_mutex_unlock(). |
|---|
| 577 | Simon Marlow <marlowsd@gmail.com>**20090116114339 |
|---|
| 578 | Ignore-this: 6cc82d384582097785d78fba46ca29d2 |
|---|
| 579 | This patch caused problems on Mac OS X, undoing until we can do it better. |
|---|
| 580 | |
|---|
| 581 | rolling back: |
|---|
| 582 | |
|---|
| 583 | Sun Jan 4 19:24:43 GMT 2009 Matthias Kilian <kili@outback.escape.de> |
|---|
| 584 | * Always check the result of pthread_mutex_lock() and pthread_mutex_unlock(). |
|---|
| 585 | |
|---|
| 586 | Don't check pthread_mutex_*lock() only on Linux and/or only if DEBUG |
|---|
| 587 | is defined. The return values of those functions are well defined |
|---|
| 588 | and should be supported on all operation systems with pthreads. The |
|---|
| 589 | checks are cheap enough to do them even in the default build (without |
|---|
| 590 | -DDEBUG). |
|---|
| 591 | |
|---|
| 592 | While here, recycle an unused macro ASSERT_LOCK_NOTHELD, and let |
|---|
| 593 | the debugBelch part enabled with -DLOCK_DEBUG work independently |
|---|
| 594 | of -DDEBUG. |
|---|
| 595 | |
|---|
| 596 | |
|---|
| 597 | M ./includes/OSThreads.h -30 +10 |
|---|
| 598 | ] |
|---|
| 599 | [Update config.guess, config.sub and install.sh from automake-1.10.2 |
|---|
| 600 | Simon Marlow <marlowsd@gmail.com>**20090116095311 |
|---|
| 601 | Ignore-this: cdc19dd28053a6a71283776ecb802c62 |
|---|
| 602 | In particular, config.guess should now know about x86_64-pc-solaris2 |
|---|
| 603 | ] |
|---|
| 604 | [More useful error message when a package .hi file cannot be found: |
|---|
| 605 | Simon Marlow <marlowsd@gmail.com>**20090115122524 |
|---|
| 606 | Ignore-this: b595e2fac5d9b5214340f83a7d7dd730 |
|---|
| 607 | |
|---|
| 608 | > import System.Process |
|---|
| 609 | Could not find module `System.Process': |
|---|
| 610 | There are files missing in the process-1.0.1.1 package, |
|---|
| 611 | try running 'ghc-pkg check'. |
|---|
| 612 | Use -v to see a list of the files searched for. |
|---|
| 613 | ] |
|---|
| 614 | [soup-up "ghc-pkg check" |
|---|
| 615 | Simon Marlow <marlowsd@gmail.com>**20090115122143 |
|---|
| 616 | Ignore-this: 6d29af258eb31d417d01fed167cd5d47 |
|---|
| 617 | |
|---|
| 618 | We now look for missing files (including .hi files), and report all |
|---|
| 619 | the packages that are transitively broken. |
|---|
| 620 | |
|---|
| 621 | $ ghc-pkg check |
|---|
| 622 | There are problems in package syb-0.1.0.0: |
|---|
| 623 | dependency foo-4.0.0.0 doesn't exist |
|---|
| 624 | There are problems in package process-1.0.1.1: |
|---|
| 625 | file System/Process.hi is missing |
|---|
| 626 | |
|---|
| 627 | The following packages are broken, either because they have a problem |
|---|
| 628 | listed above, or because they depend on a broken package. |
|---|
| 629 | syb-0.1.0.0 |
|---|
| 630 | process-1.0.1.1 |
|---|
| 631 | base-3.0.3.0 |
|---|
| 632 | Cabal-1.7.0 |
|---|
| 633 | haskell98-1.0.1.0 |
|---|
| 634 | haddock-2.4.2 |
|---|
| 635 | ghc-6.11 |
|---|
| 636 | ] |
|---|
| 637 | [document -feager-blackholing |
|---|
| 638 | Simon Marlow <marlowsd@gmail.com>**20090115093922 |
|---|
| 639 | Ignore-this: 5958a16c7148cb5df0f4b3f1e1dee6d6 |
|---|
| 640 | ] |
|---|
| 641 | [External Core: re-add code I removed mistakenly in last commit |
|---|
| 642 | Tim Chevalier <chevalier@alum.wellesley.edu>**20090115002612] |
|---|
| 643 | [External Core lib: lots of cleanup |
|---|
| 644 | Tim Chevalier <chevalier@alum.wellesley.edu>**20090114224428 |
|---|
| 645 | |
|---|
| 646 | - Factor out code for applying newtypes from Check into CoreUtils |
|---|
| 647 | - Use this code in Prep, which allowed for some simplification |
|---|
| 648 | - Change Merge and ElimDeadCode to not flatten top-level binds |
|---|
| 649 | - Add a flag for elimDeadCode to tell it whether to keep |
|---|
| 650 | exported bindings or not. |
|---|
| 651 | - Other things. |
|---|
| 652 | ] |
|---|
| 653 | [External Core: print out more precise dependency info |
|---|
| 654 | Tim Chevalier <chevalier@alum.wellesley.edu>**20090114221734 |
|---|
| 655 | |
|---|
| 656 | Print out the same recursive/non-recursive binding groups |
|---|
| 657 | that existed in internal Core in an External Core file, |
|---|
| 658 | rather than dumping everything into one big recursive group. |
|---|
| 659 | ] |
|---|
| 660 | [Fix "make install": Put "[]" in the install package.conf |
|---|
| 661 | Ian Lynagh <igloo@earth.li>**20090114205945] |
|---|
| 662 | [Remove redundant import; spotted by Thorkil Naur |
|---|
| 663 | Ian Lynagh <igloo@earth.li>**20090114181937] |
|---|
| 664 | [Remove a redundant import |
|---|
| 665 | Ian Lynagh <igloo@earth.li>**20090114181212] |
|---|
| 666 | [Detect when a C finalizer calls back to Haskell |
|---|
| 667 | Simon Marlow <marlowsd@gmail.com>**20090114121526 |
|---|
| 668 | Ignore-this: e361d7278e2478da2f300625076cc0ae |
|---|
| 669 | This is illegal now, after the fix for #1364, but it turns out that |
|---|
| 670 | the existing check for dodgy callbacks doesn't catch finalizers |
|---|
| 671 | calling back, so we need another test. This will be particularly |
|---|
| 672 | important for 6.10.2, because the behaviour has changed. |
|---|
| 673 | ] |
|---|
| 674 | [Fix Trac #2931 |
|---|
| 675 | simonpj@microsoft.com**20090113170948 |
|---|
| 676 | Ignore-this: 6ff0207627165f3f7bd145171e59b533 |
|---|
| 677 | |
|---|
| 678 | Fix the lexical analyser when it encounters 'x<EOF> and Template |
|---|
| 679 | Haskell is on. |
|---|
| 680 | |
|---|
| 681 | ] |
|---|
| 682 | [Rewrite CorePrep and improve eta expansion |
|---|
| 683 | simonpj@microsoft.com**20090113164953 |
|---|
| 684 | Ignore-this: 910d1d613592c116714c324618b1e45c |
|---|
| 685 | |
|---|
| 686 | This patch does two main things |
|---|
| 687 | |
|---|
| 688 | a) Rewrite most of CorePrep to be much easier to understand (I hope!). |
|---|
| 689 | The invariants established by CorePrep are now written out, and |
|---|
| 690 | the code is more perspicuous. It is surpringly hard to get right, |
|---|
| 691 | and the old code had become quite incomprehensible. |
|---|
| 692 | |
|---|
| 693 | b) Rewrite the eta-expander so that it does a bit of simplifying |
|---|
| 694 | on-the-fly, and thereby guarantees to maintain the CorePrep |
|---|
| 695 | invariants. This make it much easier to use from CorePrep, and |
|---|
| 696 | is a generally good thing anyway. |
|---|
| 697 | |
|---|
| 698 | A couple of pieces of re-structuring: |
|---|
| 699 | |
|---|
| 700 | * I moved the eta-expander and arity analysis stuff into a new |
|---|
| 701 | module coreSyn/CoreArity. |
|---|
| 702 | |
|---|
| 703 | Max will find that the type CoreArity.EtaInfo looks strangely |
|---|
| 704 | familiar. |
|---|
| 705 | |
|---|
| 706 | * I moved a bunch of comments from Simplify to OccurAnal; that's |
|---|
| 707 | why it looks as though there's a lot of lines changed in those |
|---|
| 708 | modules. |
|---|
| 709 | |
|---|
| 710 | On the way I fixed various things |
|---|
| 711 | |
|---|
| 712 | - Function arguments are eta expanded |
|---|
| 713 | f (map g) ===> let s = \x. map g x in f s |
|---|
| 714 | |
|---|
| 715 | - Trac #2368 |
|---|
| 716 | |
|---|
| 717 | The result is a modest performance gain, I think mainly due |
|---|
| 718 | to the first of these changes: |
|---|
| 719 | |
|---|
| 720 | -------------------------------------------------------------------------------- |
|---|
| 721 | Program Size Allocs Runtime Elapsed |
|---|
| 722 | -------------------------------------------------------------------------------- |
|---|
| 723 | Min -1.0% -17.4% -19.1% -46.4% |
|---|
| 724 | Max +0.3% +0.5% +5.4% +53.8% |
|---|
| 725 | Geometric Mean -0.1% -0.3% -7.0% -10.2% |
|---|
| 726 | |
|---|
| 727 | |
|---|
| 728 | |
|---|
| 729 | ] |
|---|
| 730 | [Rename isIdentityCoercion to isIdentityCoI; add Coercion.isIdentityCoercion |
|---|
| 731 | simonpj@microsoft.com**20090113164804 |
|---|
| 732 | Ignore-this: ac05f38a092959c08972c768fe427e06 |
|---|
| 733 | ] |
|---|
| 734 | [Spelling in comment only |
|---|
| 735 | simonpj@microsoft.com**20090113164624 |
|---|
| 736 | Ignore-this: 2eb6372f996b9133683918aecad1a5aa |
|---|
| 737 | ] |
|---|
| 738 | [Make the ASSERT more informative |
|---|
| 739 | simonpj@microsoft.com**20090113164133 |
|---|
| 740 | Ignore-this: 4059e33cf594403e03c0eb4169dc300f |
|---|
| 741 | ] |
|---|
| 742 | [Export mapOL from OrdList |
|---|
| 743 | simonpj@microsoft.com**20090113164051 |
|---|
| 744 | Ignore-this: 3debd81ae00d3745ec248197b97d312f |
|---|
| 745 | ] |
|---|
| 746 | [Improve error messages slightly |
|---|
| 747 | simonpj@microsoft.com**20090113164020 |
|---|
| 748 | Ignore-this: 89090ec03d8ea201f64105c0dbb8d5f9 |
|---|
| 749 | ] |
|---|
| 750 | [Do not do SpecConstr on functions that unconditionally diverge |
|---|
| 751 | simonpj@microsoft.com**20090113162918 |
|---|
| 752 | Ignore-this: cb0c210b936941b241c312c72545bfe2 |
|---|
| 753 | |
|---|
| 754 | There is no point in specialising a function that is guaranteed to |
|---|
| 755 | diverge, and doing so screwed up arity stuff. |
|---|
| 756 | |
|---|
| 757 | See Note [Do not specialise diverging functions]. |
|---|
| 758 | |
|---|
| 759 | |
|---|
| 760 | ] |
|---|
| 761 | [Make -XTypeFamilies imply -XRelaxedPolyRec (Trac #2944) |
|---|
| 762 | simonpj@microsoft.com**20090113162716 |
|---|
| 763 | Ignore-this: 8ab21566045c8bc8050ed7dda04e2df |
|---|
| 764 | ] |
|---|
| 765 | [Fix Trac #2937: deserialising assoicated type definitions |
|---|
| 766 | simonpj@microsoft.com**20090113153217 |
|---|
| 767 | Ignore-this: 7d7852a70a34fc22773757709735cc24 |
|---|
| 768 | |
|---|
| 769 | The deserialiser (TcIface) for associated type definitions wasn't |
|---|
| 770 | taking into account that the class decl brings into scope some |
|---|
| 771 | type variables that scope over the data/type family declaration. |
|---|
| 772 | |
|---|
| 773 | Easy to fix: the new function is TcIface.bindIfaceTyVars_AT |
|---|
| 774 | |
|---|
| 775 | ] |
|---|
| 776 | [Always check the result of pthread_mutex_lock() and pthread_mutex_unlock(). |
|---|
| 777 | Matthias Kilian <kili@outback.escape.de>**20090104192443 |
|---|
| 778 | |
|---|
| 779 | Don't check pthread_mutex_*lock() only on Linux and/or only if DEBUG |
|---|
| 780 | is defined. The return values of those functions are well defined |
|---|
| 781 | and should be supported on all operation systems with pthreads. The |
|---|
| 782 | checks are cheap enough to do them even in the default build (without |
|---|
| 783 | -DDEBUG). |
|---|
| 784 | |
|---|
| 785 | While here, recycle an unused macro ASSERT_LOCK_NOTHELD, and let |
|---|
| 786 | the debugBelch part enabled with -DLOCK_DEBUG work independently |
|---|
| 787 | of -DDEBUG. |
|---|
| 788 | |
|---|
| 789 | ] |
|---|
| 790 | [sanity checking fixes |
|---|
| 791 | Simon Marlow <marlowsd@gmail.com>**20090112121042] |
|---|
| 792 | [Keep the remembered sets local to each thread during parallel GC |
|---|
| 793 | Simon Marlow <marlowsd@gmail.com>**20090112121024 |
|---|
| 794 | This turns out to be quite vital for parallel programs: |
|---|
| 795 | |
|---|
| 796 | - The way we discover which threads to traverse is by finding |
|---|
| 797 | dirty threads via the remembered sets (aka mutable lists). |
|---|
| 798 | |
|---|
| 799 | - A dirty thread will be on the remembered set of the capability |
|---|
| 800 | that was running it, and we really want to traverse that thread's |
|---|
| 801 | stack using the GC thread for the capability, because it is in |
|---|
| 802 | that CPU's cache. If we get this wrong, we get penalised badly by |
|---|
| 803 | the memory system. |
|---|
| 804 | |
|---|
| 805 | Previously we had per-capability mutable lists but they were |
|---|
| 806 | aggregated before GC and traversed by just one of the GC threads. |
|---|
| 807 | This resulted in very poor performance particularly for parallel |
|---|
| 808 | programs with deep stacks. |
|---|
| 809 | |
|---|
| 810 | Now we keep per-capability remembered sets throughout GC, which also |
|---|
| 811 | removes a lock (recordMutableGen_sync). |
|---|
| 812 | ] |
|---|
| 813 | [indicate which TSOs are dirty in the printAllThreads() output |
|---|
| 814 | Simon Marlow <marlowsd@gmail.com>**20090107151449] |
|---|
| 815 | [Fix Trac #2584: Pretty printing of types with HsDocTy |
|---|
| 816 | David Waern <david.waern@gmail.com>**20090109191713 |
|---|
| 817 | |
|---|
| 818 | The pretty printing clause for HsDocTy was wrong, causing brackets to be left |
|---|
| 819 | out. We now print Haddock comments on types as if they were postfix type |
|---|
| 820 | operators. |
|---|
| 821 | ] |
|---|
| 822 | [Add "Word size" to the +RTS --info output |
|---|
| 823 | Ian Lynagh <igloo@earth.li>**20090109160454] |
|---|
| 824 | [Check that make supports eval |
|---|
| 825 | Ian Lynagh <igloo@earth.li>**20090109151006] |
|---|
| 826 | [Add some more fields to +RTS --info |
|---|
| 827 | Ian Lynagh <igloo@earth.li>**20090108131101] |
|---|
| 828 | [FIX BUILD on Windows (fix for #2873 broke it) |
|---|
| 829 | Simon Marlow <marlowsd@gmail.com>**20090109090658] |
|---|
| 830 | [when calling mmap() with MAP_ANON, the fd argument should be -1 |
|---|
| 831 | Simon Marlow <marlowsd@gmail.com>**20090108155341 |
|---|
| 832 | might fix #2925 |
|---|
| 833 | ] |
|---|
| 834 | [Fix Trac #2914: record wild cards and assoicated types |
|---|
| 835 | simonpj@microsoft.com**20090108124118] |
|---|
| 836 | [Fix #2873: should fail if a package DB desn't exist |
|---|
| 837 | Simon Marlow <marlowsd@gmail.com>**20090108095628 |
|---|
| 838 | We allowed non-existence before because the user DB is allowed to not |
|---|
| 839 | exist, so now we have an explicit exception for that case. |
|---|
| 840 | ] |
|---|
| 841 | [Close the races between throwTo and thread completion |
|---|
| 842 | Simon Marlow <marlowsd@gmail.com>**20090107140507 |
|---|
| 843 | Any threads we missed were being caught by the GC (possibly the idle |
|---|
| 844 | GC if the system was otherwise inactive), but that's not ideal. The |
|---|
| 845 | fix (from Bertram Felgenhauer) is to use lockTSO to synchronise, |
|---|
| 846 | imposing an unconditional lockTSO on thread exit. I couldn't measure |
|---|
| 847 | any performance overhead from doing this, so it seems reasonable. |
|---|
| 848 | ] |
|---|
| 849 | [add comment |
|---|
| 850 | Simon Marlow <marlowsd@gmail.com>**20090107121142] |
|---|
| 851 | [Fix two more locking issues in throwTo() |
|---|
| 852 | Bertram Felgenhauer <int-e@gmx.de>**20090107120808] |
|---|
| 853 | [maybePerformBlockedException() should handle ThreadComplete/ThreadKilled |
|---|
| 854 | Simon Marlow <marlowsd@gmail.com>**20090107120734 |
|---|
| 855 | Part of the fix for #2910 |
|---|
| 856 | ] |
|---|
| 857 | [fix a race where the timer signal could remain turned off, leading to deadlock |
|---|
| 858 | Simon Marlow <marlowsd@gmail.com>**20090107120652] |
|---|
| 859 | [putMVar and takeMVar: add write_barrier() to fix race with throwTo |
|---|
| 860 | Simon Marlow <marlowsd@gmail.com>**20090107112026] |
|---|
| 861 | [cruft removal |
|---|
| 862 | Simon Marlow <marlowsd@gmail.com>**20090106154408] |
|---|
| 863 | [wake up the blocked exception queue on ThreadFinished; fixes #2910 |
|---|
| 864 | Simon Marlow <marlowsd@gmail.com>**20090106153254] |
|---|
| 865 | [bump GHC's max stack size to 512M |
|---|
| 866 | Simon Marlow <marlowsd@gmail.com>**20081219112211 |
|---|
| 867 | To accomodate compiling very long static lists (#2002) |
|---|
| 868 | ] |
|---|
| 869 | [ext-core: change .cabal file so we can build with either GHC 6.8 or 6.10 |
|---|
| 870 | Tim Chevalier <chevalier@alum.wellesley.edu>**20090105192757] |
|---|
| 871 | [ext-core: fix some Prep bugs |
|---|
| 872 | Tim Chevalier <chevalier@alum.wellesley.edu>**20090105192734] |
|---|
| 873 | [ext-core: use shorter names when combining modules |
|---|
| 874 | Tim Chevalier <chevalier@alum.wellesley.edu>**20090105192645] |
|---|
| 875 | [ext-core: twiddle primitive things |
|---|
| 876 | Tim Chevalier <chevalier@alum.wellesley.edu>**20090105192434] |
|---|
| 877 | [Don't pin a register for gc_thread on SPARC. |
|---|
| 878 | Ben.Lippmeier@anu.edu.au**20090105030758 |
|---|
| 879 | |
|---|
| 880 | This makes the build work again. |
|---|
| 881 | ] |
|---|
| 882 | [Require HsColour by default |
|---|
| 883 | Ian Lynagh <igloo@earth.li>**20090104214647 |
|---|
| 884 | This should stop us ending up without HsColour'ed sources on some |
|---|
| 885 | platforms. |
|---|
| 886 | |
|---|
| 887 | We also now tell Cabal where to find HsColour, rather than it finding |
|---|
| 888 | it itself. |
|---|
| 889 | ] |
|---|
| 890 | [Fix build |
|---|
| 891 | Ian Lynagh <igloo@earth.li>**20090104211810] |
|---|
| 892 | [Add GHCi completions to :set and :show |
|---|
| 893 | Ori Avtalion <ori@avtalion.name>**20081209194210] |
|---|
| 894 | [Fix sync-all: Check for --complete/partial before --<anything> |
|---|
| 895 | Ian Lynagh <igloo@earth.li>**20090104184652 |
|---|
| 896 | Patch from megacz in trac #2857 |
|---|
| 897 | ] |
|---|
| 898 | [Remove time from extralibs at request of maintainer |
|---|
| 899 | Ian Lynagh <igloo@earth.li>**20090104115509] |
|---|
| 900 | [validate fix: InteractiveEval no longer needs to import IdInfo |
|---|
| 901 | Ian Lynagh <igloo@earth.li>**20090103154754] |
|---|
| 902 | [Fix validate: strs is no longer used in IfaceSyn |
|---|
| 903 | Ian Lynagh <igloo@earth.li>**20090103153624] |
|---|
| 904 | [Remove trailing whitespace from HaddockUtils |
|---|
| 905 | Ian Lynagh <igloo@earth.li>**20081229191727] |
|---|
| 906 | [Fix warnings in HaddockUtils |
|---|
| 907 | Ian Lynagh <igloo@earth.li>**20081229191657] |
|---|
| 908 | [Remove dead code from HaddockUtils |
|---|
| 909 | Ian Lynagh <igloo@earth.li>**20081229191430] |
|---|
| 910 | [Make record selectors into ordinary functions |
|---|
| 911 | simonpj@microsoft.com**20090102142851 |
|---|
| 912 | |
|---|
| 913 | This biggish patch addresses Trac #2670. The main effect is to make |
|---|
| 914 | record selectors into ordinary functions, whose unfoldings appear in |
|---|
| 915 | interface files, in contrast to their previous existence as magic |
|---|
| 916 | "implicit Ids". This means that the usual machinery of optimisation, |
|---|
| 917 | analysis, and inlining applies to them, which was failing before when |
|---|
| 918 | the selector was somewhat complicated. (Which it can be when |
|---|
| 919 | strictness annotations, unboxing annotations, and GADTs are involved.) |
|---|
| 920 | |
|---|
| 921 | The change involves the following points |
|---|
| 922 | |
|---|
| 923 | * Changes in Var.lhs to the representation of Var. Now a LocalId can |
|---|
| 924 | have an IdDetails as well as a GlobalId. In particular, the |
|---|
| 925 | information that an Id is a record selector is kept in the |
|---|
| 926 | IdDetails. While compiling the current module, the record selector |
|---|
| 927 | *must* be a LocalId, so that it participates properly in compilation |
|---|
| 928 | (free variables etc). |
|---|
| 929 | |
|---|
| 930 | This led me to change the (hidden) representation of Var, so that there |
|---|
| 931 | is now only one constructor for Id, not two. |
|---|
| 932 | |
|---|
| 933 | * The IdDetails is persisted into interface files, so that an |
|---|
| 934 | importing module can see which Ids are records selectors. |
|---|
| 935 | |
|---|
| 936 | * In TcTyClDecls, we generate the record-selector bindings in renamed, |
|---|
| 937 | but not typechecked form. In this way, we can get the typechecker |
|---|
| 938 | to add all the types and so on, which is jolly helpful especially |
|---|
| 939 | when GADTs or type families are involved. Just like derived |
|---|
| 940 | instance declarations. |
|---|
| 941 | |
|---|
| 942 | This is the big new chunk of 180 lines of code (much of which is |
|---|
| 943 | commentary). A call to the same function, mkAuxBinds, is needed in |
|---|
| 944 | TcInstDcls for associated types. |
|---|
| 945 | |
|---|
| 946 | * The typechecker therefore has to pin the correct IdDetails on to |
|---|
| 947 | the record selector, when it typechecks it. There was a neat way |
|---|
| 948 | to do this, by adding a new sort of signature to HsBinds.Sig, namely |
|---|
| 949 | IdSig. This contains an Id (with the correct Name, Type, and IdDetails); |
|---|
| 950 | the type checker uses it as the binder for the final binding. This |
|---|
| 951 | worked out rather easily. |
|---|
| 952 | |
|---|
| 953 | * Record selectors are no longer "implicit ids", which entails changes to |
|---|
| 954 | IfaceSyn.ifaceDeclSubBndrs |
|---|
| 955 | HscTypes.implicitTyThings |
|---|
| 956 | TidyPgm.getImplicitBinds |
|---|
| 957 | (These three functions must agree.) |
|---|
| 958 | |
|---|
| 959 | * MkId.mkRecordSelectorId is deleted entirely, some 300+ lines (incl |
|---|
| 960 | comments) of very error prone code. Happy days. |
|---|
| 961 | |
|---|
| 962 | * A TyCon no longer contains the list of record selectors: |
|---|
| 963 | algTcSelIds is gone |
|---|
| 964 | |
|---|
| 965 | The renamer is unaffected, including the way that import and export of |
|---|
| 966 | record selectors is handled. |
|---|
| 967 | |
|---|
| 968 | Other small things |
|---|
| 969 | |
|---|
| 970 | * IfaceSyn.ifaceDeclSubBndrs had a fragile test for whether a data |
|---|
| 971 | constructor had a wrapper. I've replaced that with an explicit flag |
|---|
| 972 | in the interface file. More robust I hope. |
|---|
| 973 | |
|---|
| 974 | * I renamed isIdVar to isId, which touched a few otherwise-unrelated files. |
|---|
| 975 | |
|---|
| 976 | |
|---|
| 977 | ] |
|---|
| 978 | [Fix Trac #2721: reject newtype deriving if the class has associated types |
|---|
| 979 | simonpj@microsoft.com**20081231164300] |
|---|
| 980 | [-XImpredicativeTypes implies -XRankNTypes, and improve error msg in TcMType |
|---|
| 981 | simonpj@microsoft.com**20081231152517 |
|---|
| 982 | |
|---|
| 983 | If you are going for impredicative types you almost certainly want RankN |
|---|
| 984 | too. The change to TcMType improves the error when you say |
|---|
| 985 | T (forall a. blah) |
|---|
| 986 | where T is a type synonym. This doesn't necessarily need impredicativity, |
|---|
| 987 | if you have LiberalTypeSynonyms. |
|---|
| 988 | |
|---|
| 989 | ] |
|---|
| 990 | [Fix Trac #2856: make deriving work for type families |
|---|
| 991 | simonpj@microsoft.com**20081231144151 |
|---|
| 992 | |
|---|
| 993 | Darn, but TcDeriv is complicated, when type families get in on |
|---|
| 994 | the act! This patch makes GeneralisedNewtypeDeriving work |
|---|
| 995 | properly for type families. I think. |
|---|
| 996 | |
|---|
| 997 | In order to do so, I found that GeneralisedNewtypeDeriving can |
|---|
| 998 | work for recursive newtypes too -- and since families are conservatively |
|---|
| 999 | marked recursive, that's a crucial part of the fix, and useful too. |
|---|
| 1000 | See Note [Recursive newtypes] in TcDeriv. |
|---|
| 1001 | |
|---|
| 1002 | ] |
|---|
| 1003 | [White space and spelling in comments |
|---|
| 1004 | simonpj@microsoft.com**20081231144131] |
|---|
| 1005 | [Remove -XImpredicativeTypes from -fglasgow-exts |
|---|
| 1006 | simonpj@microsoft.com**20081231144006 |
|---|
| 1007 | |
|---|
| 1008 | See Trac #2846: impredicative types are far from stable, so |
|---|
| 1009 | -fglasgow-exts should not imply them. Maybe we should merge |
|---|
| 1010 | this into 6.10? |
|---|
| 1011 | |
|---|
| 1012 | ] |
|---|
| 1013 | [Improve error reporting for 'deriving' |
|---|
| 1014 | simonpj@microsoft.com**20081231143521 |
|---|
| 1015 | |
|---|
| 1016 | a) Improve the extra suggested fix when there's a "no instance" |
|---|
| 1017 | error in a deriving clause. |
|---|
| 1018 | |
|---|
| 1019 | b) Improve error location recording in tcInstDecl2 |
|---|
| 1020 | |
|---|
| 1021 | Many of the changes in tcInstDecl2 are simple reformatting. |
|---|
| 1022 | |
|---|
| 1023 | |
|---|
| 1024 | ] |
|---|
| 1025 | [Improve error message in deriving (fix Trac #2851) |
|---|
| 1026 | simonpj@microsoft.com**20081230165906] |
|---|
| 1027 | [Avoid nasty name clash with associated data types (fixes Trac #2888) |
|---|
| 1028 | simonpj@microsoft.com**20081230164432 |
|---|
| 1029 | |
|---|
| 1030 | The main bug was in TcHsType; see Note [Avoid name clashes for |
|---|
| 1031 | associated data types]. However I did a bit of re-factoring while |
|---|
| 1032 | I was abouut it. |
|---|
| 1033 | |
|---|
| 1034 | I'm still a but unhappy with the use of TyCon.setTyConArgPoss; it'd |
|---|
| 1035 | be better to construct the TyCon correctly in the first place. But |
|---|
| 1036 | that means passing an extra parameter to tcTyDecl1... maybe we should |
|---|
| 1037 | do this. |
|---|
| 1038 | |
|---|
| 1039 | |
|---|
| 1040 | ] |
|---|
| 1041 | [Refactor RnEnv to fix Trac #2901 |
|---|
| 1042 | simonpj@microsoft.com**20081230150445 |
|---|
| 1043 | |
|---|
| 1044 | This tidy-up fixes Trac #2901, and eliminates 20 lines of code. |
|---|
| 1045 | Mainly this is done by making a version of lookupGlobalOccRn that |
|---|
| 1046 | returns (Maybe Name); this replaces lookupSrcOccRn but does more. |
|---|
| 1047 | |
|---|
| 1048 | ] |
|---|
| 1049 | [Add quotes to error message |
|---|
| 1050 | simonpj@microsoft.com**20081230150402] |
|---|
| 1051 | [Tidy up treatment of big lambda (fixes Trac #2898) |
|---|
| 1052 | simonpj@microsoft.com**20081230145948 |
|---|
| 1053 | |
|---|
| 1054 | There was a leftover big lambda in the CorePrep'd code, which confused |
|---|
| 1055 | the bytecode generator. Actually big lambdas are harmless. This patch |
|---|
| 1056 | refactors ByteCodeGen so that it systemantically used 'bcView' to eliminate |
|---|
| 1057 | junk. I did a little clean up in CorePrep too. |
|---|
| 1058 | |
|---|
| 1059 | See comments in Trac #2898. |
|---|
| 1060 | |
|---|
| 1061 | ] |
|---|
| 1062 | [Fix warnings in ByteCodeAsm |
|---|
| 1063 | Ian Lynagh <igloo@earth.li>**20081229174726] |
|---|
| 1064 | [Fix warnings in ByteCodeInstr |
|---|
| 1065 | Ian Lynagh <igloo@earth.li>**20081229173331] |
|---|
| 1066 | [Fix warnings in Rules |
|---|
| 1067 | Ian Lynagh <igloo@earth.li>**20081229171832] |
|---|
| 1068 | [Fix warnings in StgCmmForeign |
|---|
| 1069 | Ian Lynagh <igloo@earth.li>**20081229165957] |
|---|
| 1070 | [Fix warnings in CgCallConv |
|---|
| 1071 | Ian Lynagh <igloo@earth.li>**20081229165402] |
|---|
| 1072 | [Fix warnings in SMRep |
|---|
| 1073 | Ian Lynagh <igloo@earth.li>**20081229164959] |
|---|
| 1074 | [Fix warnings in ClosureInfo |
|---|
| 1075 | Ian Lynagh <igloo@earth.li>**20081229164618] |
|---|
| 1076 | [Fix warnings in CgTicky |
|---|
| 1077 | Ian Lynagh <igloo@earth.li>**20081229153416] |
|---|
| 1078 | [Fix warnings in CgCon |
|---|
| 1079 | Ian Lynagh <igloo@earth.li>**20081229151733] |
|---|
| 1080 | [Fix warnings in WorkWrap |
|---|
| 1081 | Ian Lynagh <igloo@earth.li>**20081229150406] |
|---|
| 1082 | [Fix warnings in NCGMonad |
|---|
| 1083 | Ian Lynagh <igloo@earth.li>**20081229145627] |
|---|
| 1084 | [Fix warnings in CmmInfo |
|---|
| 1085 | Ian Lynagh <igloo@earth.li>**20081229145307] |
|---|
| 1086 | [Fix warnings in CmmCPSGen |
|---|
| 1087 | Ian Lynagh <igloo@earth.li>**20081229145119] |
|---|
| 1088 | [Fix warnings in CmmProcPoint |
|---|
| 1089 | Ian Lynagh <igloo@earth.li>**20081229144214] |
|---|
| 1090 | [Fix warnings in CmmCallConv |
|---|
| 1091 | Ian Lynagh <igloo@earth.li>**20081229141924] |
|---|
| 1092 | [Fix warnings in CmmLive |
|---|
| 1093 | Ian Lynagh <igloo@earth.li>**20081229141035] |
|---|
| 1094 | [Fix warnings in CmmCPS |
|---|
| 1095 | Ian Lynagh <igloo@earth.li>**20081229133158] |
|---|
| 1096 | [Fix warnings in CmmUtils |
|---|
| 1097 | Ian Lynagh <igloo@earth.li>**20081229132637] |
|---|
| 1098 | [Comment out dead function breakProc |
|---|
| 1099 | Ian Lynagh <igloo@earth.li>**20081229115647] |
|---|
| 1100 | [Fix warnings in CmmBrokenBlock |
|---|
| 1101 | Ian Lynagh <igloo@earth.li>**20081229115527] |
|---|
| 1102 | [Comments only. Haddockify parts of TcRnTypes. |
|---|
| 1103 | Thomas Schilling <nominolo@googlemail.com>**20081211154657] |
|---|
| 1104 | [Comments only. Fix typo. |
|---|
| 1105 | Thomas Schilling <nominolo@googlemail.com>**20081211153104] |
|---|
| 1106 | [Include PprTyThings in tags file. |
|---|
| 1107 | Thomas Schilling <nominolo@googlemail.com>**20081211153005] |
|---|
| 1108 | [Use DynFlags to work out if we are doing ticky ticky profiling |
|---|
| 1109 | Ian Lynagh <igloo@earth.li>**20081218161928 |
|---|
| 1110 | We used to use StaticFlags |
|---|
| 1111 | ] |
|---|
| 1112 | [Fix warnings in CgExpr |
|---|
| 1113 | Ian Lynagh <igloo@earth.li>**20081217201152] |
|---|
| 1114 | [Fix warnings in CgBindery |
|---|
| 1115 | Ian Lynagh <igloo@earth.li>**20081217194607] |
|---|
| 1116 | [Fix warnings in CgStackery |
|---|
| 1117 | Ian Lynagh <igloo@earth.li>**20081217191713] |
|---|
| 1118 | [Fix warnings in CgCase |
|---|
| 1119 | Ian Lynagh <igloo@earth.li>**20081217190848] |
|---|
| 1120 | [Remove some dead code from CgCase |
|---|
| 1121 | Ian Lynagh <igloo@earth.li>**20081217184755] |
|---|
| 1122 | [Fix warnings in StgCmmProf |
|---|
| 1123 | Ian Lynagh <igloo@earth.li>**20081217182236] |
|---|
| 1124 | [Fix warnings in CgProf |
|---|
| 1125 | Ian Lynagh <igloo@earth.li>**20081217181711] |
|---|
| 1126 | [Fix warnings in CgInfoTbls |
|---|
| 1127 | Ian Lynagh <igloo@earth.li>**20081217180144] |
|---|
| 1128 | [Remove dead function srtLabelAndLength from CgInfoTbls |
|---|
| 1129 | Ian Lynagh <igloo@earth.li>**20081217180044] |
|---|
| 1130 | [Fix warnings in CgHeapery |
|---|
| 1131 | Ian Lynagh <igloo@earth.li>**20081217175726] |
|---|
| 1132 | [Fix warnings in CgTailCall |
|---|
| 1133 | Ian Lynagh <igloo@earth.li>**20081217175040] |
|---|
| 1134 | [Remove a little dead code from CgTailCall |
|---|
| 1135 | Ian Lynagh <igloo@earth.li>**20081217174947] |
|---|
| 1136 | [Fix warnings in CodeGen |
|---|
| 1137 | Ian Lynagh <igloo@earth.li>**20081217165904] |
|---|
| 1138 | [Fix warnings in StgCmmTicky |
|---|
| 1139 | Ian Lynagh <igloo@earth.li>**20081217165433] |
|---|
| 1140 | [Remove dead code from CgUtils |
|---|
| 1141 | Ian Lynagh <igloo@earth.li>**20081217163920] |
|---|
| 1142 | [Fix warnings in CgPrimOp |
|---|
| 1143 | Ian Lynagh <igloo@earth.li>**20081217163912] |
|---|
| 1144 | [Fix warnings in CgMonad |
|---|
| 1145 | Ian Lynagh <igloo@earth.li>**20081217163903] |
|---|
| 1146 | [Fix warnings in CgClosure |
|---|
| 1147 | Ian Lynagh <igloo@earth.li>**20081217163850] |
|---|
| 1148 | [Fix warnings in CgForeignCall |
|---|
| 1149 | Ian Lynagh <igloo@earth.li>**20081215222515] |
|---|
| 1150 | [Remove some redundant code |
|---|
| 1151 | Ian Lynagh <igloo@earth.li>**20081215194047 |
|---|
| 1152 | We were looking at opt_DoTickyProfiling, and if it was set claling ifTicky |
|---|
| 1153 | which looks at opt_DoTickyProfiling itself. |
|---|
| 1154 | ] |
|---|
| 1155 | [Fix warnings in CgLetNoEscape |
|---|
| 1156 | Ian Lynagh <igloo@earth.li>**20081215173752] |
|---|
| 1157 | [Workaround for #2262, from Barney Stratford |
|---|
| 1158 | Simon Marlow <marlowsd@gmail.com>**20081216124706 |
|---|
| 1159 | See http://www.haskell.org/pipermail/glasgow-haskell-users/2008-December/016333.html |
|---|
| 1160 | ] |
|---|
| 1161 | [UNDO: Add -fpass-case-bndr-to-join-points |
|---|
| 1162 | Simon Marlow <marlowsd@gmail.com>**20081216114235 |
|---|
| 1163 | |
|---|
| 1164 | rolling back: |
|---|
| 1165 | |
|---|
| 1166 | Fri Dec 5 10:51:59 GMT 2008 simonpj@microsoft.com |
|---|
| 1167 | * Add -fpass-case-bndr-to-join-points |
|---|
| 1168 | |
|---|
| 1169 | See Note [Passing the case binder to join points] in Simplify.lhs |
|---|
| 1170 | The default now is *not* to pass the case binder. There are some |
|---|
| 1171 | nofib results with the above note; the effect is almost always |
|---|
| 1172 | negligible. |
|---|
| 1173 | |
|---|
| 1174 | I don't expect this flag to be used by users (hence no docs). It's just |
|---|
| 1175 | there to let me try the performance effects of switching on and off. |
|---|
| 1176 | |
|---|
| 1177 | |
|---|
| 1178 | M ./compiler/main/StaticFlagParser.hs +1 |
|---|
| 1179 | M ./compiler/main/StaticFlags.hs +4 |
|---|
| 1180 | M ./compiler/simplCore/Simplify.lhs -14 +73 |
|---|
| 1181 | ] |
|---|
| 1182 | [Rollback INLINE patches |
|---|
| 1183 | Simon Marlow <marlowsd@gmail.com>**20081216103556 |
|---|
| 1184 | |
|---|
| 1185 | rolling back: |
|---|
| 1186 | |
|---|
| 1187 | Fri Dec 5 16:54:00 GMT 2008 simonpj@microsoft.com |
|---|
| 1188 | * Completely new treatment of INLINE pragmas (big patch) |
|---|
| 1189 | |
|---|
| 1190 | This is a major patch, which changes the way INLINE pragmas work. |
|---|
| 1191 | Although lots of files are touched, the net is only +21 lines of |
|---|
| 1192 | code -- and I bet that most of those are comments! |
|---|
| 1193 | |
|---|
| 1194 | HEADS UP: interface file format has changed, so you'll need to |
|---|
| 1195 | recompile everything. |
|---|
| 1196 | |
|---|
| 1197 | There is not much effect on overall performance for nofib, |
|---|
| 1198 | probably because those programs don't make heavy use of INLINE pragmas. |
|---|
| 1199 | |
|---|
| 1200 | Program Size Allocs Runtime Elapsed |
|---|
| 1201 | Min -11.3% -6.9% -9.2% -8.2% |
|---|
| 1202 | Max -0.1% +4.6% +7.5% +8.9% |
|---|
| 1203 | Geometric Mean -2.2% -0.2% -1.0% -0.8% |
|---|
| 1204 | |
|---|
| 1205 | (The +4.6% for on allocs is cichelli; see other patch relating to |
|---|
| 1206 | -fpass-case-bndr-to-join-points.) |
|---|
| 1207 | |
|---|
| 1208 | The old INLINE system |
|---|
| 1209 | ~~~~~~~~~~~~~~~~~~~~~ |
|---|
| 1210 | The old system worked like this. A function with an INLINE pragam |
|---|
| 1211 | got a right-hand side which looked like |
|---|
| 1212 | f = __inline_me__ (\xy. e) |
|---|
| 1213 | The __inline_me__ part was an InlineNote, and was treated specially |
|---|
| 1214 | in various ways. Notably, the simplifier didn't inline inside an |
|---|
| 1215 | __inline_me__ note. |
|---|
| 1216 | |
|---|
| 1217 | As a result, the code for f itself was pretty crappy. That matters |
|---|
| 1218 | if you say (map f xs), because then you execute the code for f, |
|---|
| 1219 | rather than inlining a copy at the call site. |
|---|
| 1220 | |
|---|
| 1221 | The new story: InlineRules |
|---|
| 1222 | ~~~~~~~~~~~~~~~~~~~~~~~~~~ |
|---|
| 1223 | The new system removes the InlineMe Note altogether. Instead there |
|---|
| 1224 | is a new constructor InlineRule in CoreSyn.Unfolding. This is a |
|---|
| 1225 | bit like a RULE, in that it remembers the template to be inlined inside |
|---|
| 1226 | the InlineRule. No simplification or inlining is done on an InlineRule, |
|---|
| 1227 | just like RULEs. |
|---|
| 1228 | |
|---|
| 1229 | An Id can have an InlineRule *or* a CoreUnfolding (since these are two |
|---|
| 1230 | constructors from Unfolding). The simplifier treats them differently: |
|---|
| 1231 | |
|---|
| 1232 | - An InlineRule is has the substitution applied (like RULES) but |
|---|
| 1233 | is otherwise left undisturbed. |
|---|
| 1234 | |
|---|
| 1235 | - A CoreUnfolding is updated with the new RHS of the definition, |
|---|
| 1236 | on each iteration of the simplifier. |
|---|
| 1237 | |
|---|
| 1238 | An InlineRule fires regardless of size, but *only* when the function |
|---|
| 1239 | is applied to enough arguments. The "arity" of the rule is specified |
|---|
| 1240 | (by the programmer) as the number of args on the LHS of the "=". So |
|---|
| 1241 | it makes a difference whether you say |
|---|
| 1242 | {-# INLINE f #-} |
|---|
| 1243 | f x = \y -> e or f x y = e |
|---|
| 1244 | This is one of the big new features that InlineRule gives us, and it |
|---|
| 1245 | is one that Roman really wanted. |
|---|
| 1246 | |
|---|
| 1247 | In contrast, a CoreUnfolding can fire when it is applied to fewer |
|---|
| 1248 | args than than the function has lambdas, provided the result is small |
|---|
| 1249 | enough. |
|---|
| 1250 | |
|---|
| 1251 | |
|---|
| 1252 | Consequential stuff |
|---|
| 1253 | ~~~~~~~~~~~~~~~~~~~ |
|---|
| 1254 | * A 'wrapper' no longer has a WrapperInfo in the IdInfo. Instead, |
|---|
| 1255 | the InlineRule has a field identifying wrappers. |
|---|
| 1256 | |
|---|
| 1257 | * Of course, IfaceSyn and interface serialisation changes appropriately. |
|---|
| 1258 | |
|---|
| 1259 | * Making implication constraints inline nicely was a bit fiddly. In |
|---|
| 1260 | the end I added a var_inline field to HsBInd.VarBind, which is why |
|---|
| 1261 | this patch affects the type checker slightly |
|---|
| 1262 | |
|---|
| 1263 | * I made some changes to the way in which eta expansion happens in |
|---|
| 1264 | CorePrep, mainly to ensure that *arguments* that become let-bound |
|---|
| 1265 | are also eta-expanded. I'm still not too happy with the clarity |
|---|
| 1266 | and robustness fo the result. |
|---|
| 1267 | |
|---|
| 1268 | * We now complain if the programmer gives an INLINE pragma for |
|---|
| 1269 | a recursive function (prevsiously we just ignored it). Reason for |
|---|
| 1270 | change: we don't want an InlineRule on a LoopBreaker, because then |
|---|
| 1271 | we'd have to check for loop-breaker-hood at occurrence sites (which |
|---|
| 1272 | isn't currenlty done). Some tests need changing as a result. |
|---|
| 1273 | |
|---|
| 1274 | This patch has been in my tree for quite a while, so there are |
|---|
| 1275 | probably some other minor changes. |
|---|
| 1276 | |
|---|
| 1277 | |
|---|
| 1278 | M ./compiler/basicTypes/Id.lhs -11 |
|---|
| 1279 | M ./compiler/basicTypes/IdInfo.lhs -82 |
|---|
| 1280 | M ./compiler/basicTypes/MkId.lhs -2 +2 |
|---|
| 1281 | M ./compiler/coreSyn/CoreFVs.lhs -2 +25 |
|---|
| 1282 | M ./compiler/coreSyn/CoreLint.lhs -5 +1 |
|---|
| 1283 | M ./compiler/coreSyn/CorePrep.lhs -59 +53 |
|---|
| 1284 | M ./compiler/coreSyn/CoreSubst.lhs -22 +31 |
|---|
| 1285 | M ./compiler/coreSyn/CoreSyn.lhs -66 +92 |
|---|
| 1286 | M ./compiler/coreSyn/CoreUnfold.lhs -112 +112 |
|---|
| 1287 | M ./compiler/coreSyn/CoreUtils.lhs -185 +184 |
|---|
| 1288 | M ./compiler/coreSyn/MkExternalCore.lhs -1 |
|---|
| 1289 | M ./compiler/coreSyn/PprCore.lhs -4 +40 |
|---|
| 1290 | M ./compiler/deSugar/DsBinds.lhs -70 +118 |
|---|
| 1291 | M ./compiler/deSugar/DsForeign.lhs -2 +4 |
|---|
| 1292 | M ./compiler/deSugar/DsMeta.hs -4 +3 |
|---|
| 1293 | M ./compiler/hsSyn/HsBinds.lhs -3 +3 |
|---|
| 1294 | M ./compiler/hsSyn/HsUtils.lhs -2 +7 |
|---|
| 1295 | M ./compiler/iface/BinIface.hs -11 +25 |
|---|
| 1296 | M ./compiler/iface/IfaceSyn.lhs -13 +21 |
|---|
| 1297 | M ./compiler/iface/MkIface.lhs -24 +19 |
|---|
| 1298 | M ./compiler/iface/TcIface.lhs -29 +23 |
|---|
| 1299 | M ./compiler/main/TidyPgm.lhs -55 +49 |
|---|
| 1300 | M ./compiler/parser/ParserCore.y -5 +6 |
|---|
| 1301 | M ./compiler/simplCore/CSE.lhs -2 +1 |
|---|
| 1302 | M ./compiler/simplCore/FloatIn.lhs -6 +1 |
|---|
| 1303 | M ./compiler/simplCore/FloatOut.lhs -23 |
|---|
| 1304 | M ./compiler/simplCore/OccurAnal.lhs -36 +5 |
|---|
| 1305 | M ./compiler/simplCore/SetLevels.lhs -59 +54 |
|---|
| 1306 | M ./compiler/simplCore/SimplCore.lhs -48 +52 |
|---|
| 1307 | M ./compiler/simplCore/SimplEnv.lhs -26 +22 |
|---|
| 1308 | M ./compiler/simplCore/SimplUtils.lhs -28 +4 |
|---|
| 1309 | M ./compiler/simplCore/Simplify.lhs -91 +109 |
|---|
| 1310 | M ./compiler/specialise/Specialise.lhs -15 +18 |
|---|
| 1311 | M ./compiler/stranal/WorkWrap.lhs -14 +11 |
|---|
| 1312 | M ./compiler/stranal/WwLib.lhs -2 +2 |
|---|
| 1313 | M ./compiler/typecheck/Inst.lhs -1 +3 |
|---|
| 1314 | M ./compiler/typecheck/TcBinds.lhs -17 +27 |
|---|
| 1315 | M ./compiler/typecheck/TcClassDcl.lhs -1 +2 |
|---|
| 1316 | M ./compiler/typecheck/TcExpr.lhs -4 +6 |
|---|
| 1317 | M ./compiler/typecheck/TcForeign.lhs -1 +1 |
|---|
| 1318 | M ./compiler/typecheck/TcGenDeriv.lhs -14 +13 |
|---|
| 1319 | M ./compiler/typecheck/TcHsSyn.lhs -3 +2 |
|---|
| 1320 | M ./compiler/typecheck/TcInstDcls.lhs -5 +4 |
|---|
| 1321 | M ./compiler/typecheck/TcRnDriver.lhs -2 +11 |
|---|
| 1322 | M ./compiler/typecheck/TcSimplify.lhs -10 +17 |
|---|
| 1323 | M ./compiler/vectorise/VectType.hs +7 |
|---|
| 1324 | |
|---|
| 1325 | Mon Dec 8 12:43:10 GMT 2008 simonpj@microsoft.com |
|---|
| 1326 | * White space only |
|---|
| 1327 | |
|---|
| 1328 | M ./compiler/simplCore/Simplify.lhs -2 |
|---|
| 1329 | |
|---|
| 1330 | Mon Dec 8 12:48:40 GMT 2008 simonpj@microsoft.com |
|---|
| 1331 | * Move simpleOptExpr from CoreUnfold to CoreSubst |
|---|
| 1332 | |
|---|
| 1333 | M ./compiler/coreSyn/CoreSubst.lhs -1 +87 |
|---|
| 1334 | M ./compiler/coreSyn/CoreUnfold.lhs -72 +1 |
|---|
| 1335 | |
|---|
| 1336 | Mon Dec 8 17:30:18 GMT 2008 simonpj@microsoft.com |
|---|
| 1337 | * Use CoreSubst.simpleOptExpr in place of the ad-hoc simpleSubst (reduces code too) |
|---|
| 1338 | |
|---|
| 1339 | M ./compiler/deSugar/DsBinds.lhs -50 +16 |
|---|
| 1340 | |
|---|
| 1341 | Tue Dec 9 17:03:02 GMT 2008 simonpj@microsoft.com |
|---|
| 1342 | * Fix Trac #2861: bogus eta expansion |
|---|
| 1343 | |
|---|
| 1344 | Urghlhl! I "tided up" the treatment of the "state hack" in CoreUtils, but |
|---|
| 1345 | missed an unexpected interaction with the way that a bottoming function |
|---|
| 1346 | simply swallows excess arguments. There's a long |
|---|
| 1347 | Note [State hack and bottoming functions] |
|---|
| 1348 | to explain (which accounts for most of the new lines of code). |
|---|
| 1349 | |
|---|
| 1350 | |
|---|
| 1351 | M ./compiler/coreSyn/CoreUtils.lhs -16 +53 |
|---|
| 1352 | |
|---|
| 1353 | Mon Dec 15 10:02:21 GMT 2008 Simon Marlow <marlowsd@gmail.com> |
|---|
| 1354 | * Revert CorePrep part of "Completely new treatment of INLINE pragmas..." |
|---|
| 1355 | |
|---|
| 1356 | The original patch said: |
|---|
| 1357 | |
|---|
| 1358 | * I made some changes to the way in which eta expansion happens in |
|---|
| 1359 | CorePrep, mainly to ensure that *arguments* that become let-bound |
|---|
| 1360 | are also eta-expanded. I'm still not too happy with the clarity |
|---|
| 1361 | and robustness fo the result. |
|---|
| 1362 | |
|---|
| 1363 | Unfortunately this change apparently broke some invariants that were |
|---|
| 1364 | relied on elsewhere, and in particular lead to panics when compiling |
|---|
| 1365 | with profiling on. |
|---|
| 1366 | |
|---|
| 1367 | Will re-investigate in the new year. |
|---|
| 1368 | |
|---|
| 1369 | M ./compiler/coreSyn/CorePrep.lhs -53 +58 |
|---|
| 1370 | M ./configure.ac -1 +1 |
|---|
| 1371 | |
|---|
| 1372 | Mon Dec 15 12:28:51 GMT 2008 Simon Marlow <marlowsd@gmail.com> |
|---|
| 1373 | * revert accidental change to configure.ac |
|---|
| 1374 | |
|---|
| 1375 | M ./configure.ac -1 +1 |
|---|
| 1376 | ] |
|---|
| 1377 | [revert accidental change to configure.ac |
|---|
| 1378 | Simon Marlow <marlowsd@gmail.com>**20081215122851] |
|---|
| 1379 | [Revert CorePrep part of "Completely new treatment of INLINE pragmas..." |
|---|
| 1380 | Simon Marlow <marlowsd@gmail.com>**20081215100221 |
|---|
| 1381 | |
|---|
| 1382 | The original patch said: |
|---|
| 1383 | |
|---|
| 1384 | * I made some changes to the way in which eta expansion happens in |
|---|
| 1385 | CorePrep, mainly to ensure that *arguments* that become let-bound |
|---|
| 1386 | are also eta-expanded. I'm still not too happy with the clarity |
|---|
| 1387 | and robustness fo the result. |
|---|
| 1388 | |
|---|
| 1389 | Unfortunately this change apparently broke some invariants that were |
|---|
| 1390 | relied on elsewhere, and in particular lead to panics when compiling |
|---|
| 1391 | with profiling on. |
|---|
| 1392 | |
|---|
| 1393 | Will re-investigate in the new year. |
|---|
| 1394 | ] |
|---|
| 1395 | [wake up other Capabilities even when there is only one spark (see #2868) |
|---|
| 1396 | Simon Marlow <marlowsd@gmail.com>**20081210164644] |
|---|
| 1397 | [Document new GC options -q1 and -qg<n> |
|---|
| 1398 | Simon Marlow <marlowsd@gmail.com>**20081210164557] |
|---|
| 1399 | [SysTools no longer needs -fno-cse |
|---|
| 1400 | Ian Lynagh <igloo@earth.li>**20081211182327] |
|---|
| 1401 | [Make the lists of files and directories to be cleaned-up non-global |
|---|
| 1402 | Ian Lynagh <igloo@earth.li>**20081211180739 |
|---|
| 1403 | They still need to be stored in IORefs, as the exception handler needs |
|---|
| 1404 | to know what they all are. |
|---|
| 1405 | ] |
|---|
| 1406 | [The default cleanup handler should /always/ delete the temp files |
|---|
| 1407 | Ian Lynagh <igloo@earth.li>**20081211170006 |
|---|
| 1408 | Not only if there has been an exception. It worked for GHC anyway, |
|---|
| 1409 | as it was getting an ExitSuccess exception, but GHC API clients |
|---|
| 1410 | shouldn't be required to do that. |
|---|
| 1411 | ] |
|---|
| 1412 | [Fix user guide typesetting |
|---|
| 1413 | Ian Lynagh <igloo@earth.li>**20081210165434] |
|---|
| 1414 | [FIX #1364: added support for C finalizers that run as soon as the value is not longer reachable. |
|---|
| 1415 | Simon Marlow <marlowsd@gmail.com>**20081210150425 |
|---|
| 1416 | |
|---|
| 1417 | Patch originally by Ivan Tomac <tomac@pacific.net.au>, amended by |
|---|
| 1418 | Simon Marlow: |
|---|
| 1419 | |
|---|
| 1420 | - mkWeakFinalizer# commoned up with mkWeakFinalizerEnv# |
|---|
| 1421 | - GC parameters to ALLOC_PRIM fixed |
|---|
| 1422 | ] |
|---|
| 1423 | [On FreeBSD, try MAP_FIXED if ordinary mmap() fails to give us suitable memory |
|---|
| 1424 | Simon Marlow <marlowsd@gmail.com>**20081210115751 |
|---|
| 1425 | This appears to be necessary on FreeBSD. It might be necessary on |
|---|
| 1426 | other OSs too, but I'm being cautious because using MAP_FIXED can lead |
|---|
| 1427 | to crashes by overwriting existing mappings, and we have no (easy) way |
|---|
| 1428 | to prevent that. |
|---|
| 1429 | ] |
|---|
| 1430 | [Document hs_init() infelicity (#2863) |
|---|
| 1431 | Simon Marlow <marlowsd@gmail.com>**20081209164322] |
|---|
| 1432 | [Improve documentation for data family instances (cf Trac #1968) |
|---|
| 1433 | simonpj@microsoft.com**20081210054432 |
|---|
| 1434 | |
|---|
| 1435 | The HEAD allows GADT syntax for data/newtype family instances. |
|---|
| 1436 | (GHC 6.10 does not seem to.) |
|---|
| 1437 | |
|---|
| 1438 | ] |
|---|
| 1439 | [Make some profiling flags dynamic |
|---|
| 1440 | Ian Lynagh <igloo@earth.li>**20081209230157 |
|---|
| 1441 | In particular: |
|---|
| 1442 | -fauto-sccs-on-all-toplevs -auto-all -no-auto-all |
|---|
| 1443 | -fauto-sccs-on-exported-toplevs -auto -no-auto |
|---|
| 1444 | -fauto-sccs-on-individual-cafs -caf-all -no-caf-all |
|---|
| 1445 | ] |
|---|
| 1446 | [Fix warnings in StgCmmGran |
|---|
| 1447 | Ian Lynagh <igloo@earth.li>**20081209222413] |
|---|
| 1448 | [Add OPTIONS_CATCH,DERIVE,YHC to those that GHC knows about; trac #2847 |
|---|
| 1449 | Ian Lynagh <igloo@earth.li>**20081209191724] |
|---|
| 1450 | [Fix warnings in CgHpc |
|---|
| 1451 | Ian Lynagh <igloo@earth.li>**20081209191713] |
|---|
| 1452 | [Parse pragma names better; trac #2847 |
|---|
| 1453 | Ian Lynagh <igloo@earth.li>**20081209190318 |
|---|
| 1454 | We require that pragma names are not followed by pragma character, |
|---|
| 1455 | defined as |
|---|
| 1456 | isAlphaNum c || c == '_' |
|---|
| 1457 | ] |
|---|
| 1458 | [Fix warnings in CgParallel |
|---|
| 1459 | Ian Lynagh <igloo@earth.li>**20081209184402] |
|---|
| 1460 | [Fix warnings in StgCmmHpc |
|---|
| 1461 | Ian Lynagh <igloo@earth.li>**20081209184004] |
|---|
| 1462 | [Remove an unnecessary -w flag |
|---|
| 1463 | Ian Lynagh <igloo@earth.li>**20081209183812] |
|---|
| 1464 | [Fix Trac #2861: bogus eta expansion |
|---|
| 1465 | simonpj@microsoft.com**20081209170302 |
|---|
| 1466 | |
|---|
| 1467 | Urghlhl! I "tided up" the treatment of the "state hack" in CoreUtils, but |
|---|
| 1468 | missed an unexpected interaction with the way that a bottoming function |
|---|
| 1469 | simply swallows excess arguments. There's a long |
|---|
| 1470 | Note [State hack and bottoming functions] |
|---|
| 1471 | to explain (which accounts for most of the new lines of code). |
|---|
| 1472 | |
|---|
| 1473 | ] |
|---|
| 1474 | [Fix #2592: do an orderly shutdown when the heap is exhausted |
|---|
| 1475 | Simon Marlow <marlowsd@gmail.com>**20081209105919 |
|---|
| 1476 | Really we should be raising an exception in this case, but that's |
|---|
| 1477 | tricky (see comments). At least now we shut down the runtime |
|---|
| 1478 | correctly rather than just exiting. |
|---|
| 1479 | ] |
|---|
| 1480 | [Fix #2848: avoid overflow during time calculation |
|---|
| 1481 | Simon Marlow <marlowsd@gmail.com>**20081209105600] |
|---|
| 1482 | [Fix #2838: we should narrow a CmmInt before converting to ImmInteger |
|---|
| 1483 | Simon Marlow <marlowsd@gmail.com>**20081209105515] |
|---|
| 1484 | [fix an assertion failure in prof/threaded/debug mode |
|---|
| 1485 | Simon Marlow <marlowsd@gmail.com>**20081204101201] |
|---|
| 1486 | [Inject implicit bindings after CoreTidy, not before Simplify |
|---|
| 1487 | simonpj@microsoft.com**20081208173525 |
|---|
| 1488 | |
|---|
| 1489 | Originally I inject the "implicit bindings" (record selectors, class |
|---|
| 1490 | method selectors, data con wrappers...) after CoreTidy. However, in a |
|---|
| 1491 | misguided attempt to fix Trac #2070, I moved the injection point to |
|---|
| 1492 | before the Simplifier, so that record selectors would be optimised by |
|---|
| 1493 | the simplifier. |
|---|
| 1494 | |
|---|
| 1495 | This was misguided because record selectors (indeed all implicit bindings) |
|---|
| 1496 | are GlobalIds, whose IdInfo is meant to be frozen. But the Simplifier, |
|---|
| 1497 | and other Core-to-Core optimisations, merrily change the IdInfo. That |
|---|
| 1498 | ultimately made Trac #2844 happen, where a record selector got arity 2, |
|---|
| 1499 | but the GlobalId (which importing scopes re-construct from the class decl |
|---|
| 1500 | rather than reading from the interface file) has arity 1. |
|---|
| 1501 | |
|---|
| 1502 | So this patch moves the injection back to CoreTidy. Happily #2070 should |
|---|
| 1503 | still be OK because we now use CoreSubst.simpleOptExpr on the unfoldings |
|---|
| 1504 | for implict things, which gets rid of the most gratuitous infelicities. |
|---|
| 1505 | |
|---|
| 1506 | Still, there's a strong case for stoppping record selectors from being |
|---|
| 1507 | GlobalIds, and treating them much more like dict-funs. I'm thinking |
|---|
| 1508 | about that. Meanwhile, #2844 is ok now. |
|---|
| 1509 | |
|---|
| 1510 | ] |
|---|
| 1511 | [Add assertion for arity match (checks Trac #2844) |
|---|
| 1512 | simonpj@microsoft.com**20081208173241 |
|---|
| 1513 | |
|---|
| 1514 | The exported arity of a function must match the arity for the |
|---|
| 1515 | STG function. Trac #2844 was a pretty obscure manifestation of |
|---|
| 1516 | the failure of this invariant. This patch doesn't cure the bug; |
|---|
| 1517 | rather it adds an assertion to CoreToStg to check the invariant |
|---|
| 1518 | so we should get an earlier and less obscure warning if this |
|---|
| 1519 | fails in future. |
|---|
| 1520 | |
|---|
| 1521 | ] |
|---|
| 1522 | [Use CoreSubst.simpleOptExpr in place of the ad-hoc simpleSubst (reduces code too) |
|---|
| 1523 | simonpj@microsoft.com**20081208173018] |
|---|
| 1524 | [Move simpleOptExpr from CoreUnfold to CoreSubst |
|---|
| 1525 | simonpj@microsoft.com**20081208124840] |
|---|
| 1526 | [White space only |
|---|
| 1527 | simonpj@microsoft.com**20081208124310] |
|---|
| 1528 | [Comments only |
|---|
| 1529 | simonpj@microsoft.com**20081208124155] |
|---|
| 1530 | [Completely new treatment of INLINE pragmas (big patch) |
|---|
| 1531 | simonpj@microsoft.com**20081205165400 |
|---|
| 1532 | |
|---|
| 1533 | This is a major patch, which changes the way INLINE pragmas work. |
|---|
| 1534 | Although lots of files are touched, the net is only +21 lines of |
|---|
| 1535 | code -- and I bet that most of those are comments! |
|---|
| 1536 | |
|---|
| 1537 | HEADS UP: interface file format has changed, so you'll need to |
|---|
| 1538 | recompile everything. |
|---|
| 1539 | |
|---|
| 1540 | There is not much effect on overall performance for nofib, |
|---|
| 1541 | probably because those programs don't make heavy use of INLINE pragmas. |
|---|
| 1542 | |
|---|
| 1543 | Program Size Allocs Runtime Elapsed |
|---|
| 1544 | Min -11.3% -6.9% -9.2% -8.2% |
|---|
| 1545 | Max -0.1% +4.6% +7.5% +8.9% |
|---|
| 1546 | Geometric Mean -2.2% -0.2% -1.0% -0.8% |
|---|
| 1547 | |
|---|
| 1548 | (The +4.6% for on allocs is cichelli; see other patch relating to |
|---|
| 1549 | -fpass-case-bndr-to-join-points.) |
|---|
| 1550 | |
|---|
| 1551 | The old INLINE system |
|---|
| 1552 | ~~~~~~~~~~~~~~~~~~~~~ |
|---|
| 1553 | The old system worked like this. A function with an INLINE pragam |
|---|
| 1554 | got a right-hand side which looked like |
|---|
| 1555 | f = __inline_me__ (\xy. e) |
|---|
| 1556 | The __inline_me__ part was an InlineNote, and was treated specially |
|---|
| 1557 | in various ways. Notably, the simplifier didn't inline inside an |
|---|
| 1558 | __inline_me__ note. |
|---|
| 1559 | |
|---|
| 1560 | As a result, the code for f itself was pretty crappy. That matters |
|---|
| 1561 | if you say (map f xs), because then you execute the code for f, |
|---|
| 1562 | rather than inlining a copy at the call site. |
|---|
| 1563 | |
|---|
| 1564 | The new story: InlineRules |
|---|
| 1565 | ~~~~~~~~~~~~~~~~~~~~~~~~~~ |
|---|
| 1566 | The new system removes the InlineMe Note altogether. Instead there |
|---|
| 1567 | is a new constructor InlineRule in CoreSyn.Unfolding. This is a |
|---|
| 1568 | bit like a RULE, in that it remembers the template to be inlined inside |
|---|
| 1569 | the InlineRule. No simplification or inlining is done on an InlineRule, |
|---|
| 1570 | just like RULEs. |
|---|
| 1571 | |
|---|
| 1572 | An Id can have an InlineRule *or* a CoreUnfolding (since these are two |
|---|
| 1573 | constructors from Unfolding). The simplifier treats them differently: |
|---|
| 1574 | |
|---|
| 1575 | - An InlineRule is has the substitution applied (like RULES) but |
|---|
| 1576 | is otherwise left undisturbed. |
|---|
| 1577 | |
|---|
| 1578 | - A CoreUnfolding is updated with the new RHS of the definition, |
|---|
| 1579 | on each iteration of the simplifier. |
|---|
| 1580 | |
|---|
| 1581 | An InlineRule fires regardless of size, but *only* when the function |
|---|
| 1582 | is applied to enough arguments. The "arity" of the rule is specified |
|---|
| 1583 | (by the programmer) as the number of args on the LHS of the "=". So |
|---|
| 1584 | it makes a difference whether you say |
|---|
| 1585 | {-# INLINE f #-} |
|---|
| 1586 | f x = \y -> e or f x y = e |
|---|
| 1587 | This is one of the big new features that InlineRule gives us, and it |
|---|
| 1588 | is one that Roman really wanted. |
|---|
| 1589 | |
|---|
| 1590 | In contrast, a CoreUnfolding can fire when it is applied to fewer |
|---|
| 1591 | args than than the function has lambdas, provided the result is small |
|---|
| 1592 | enough. |
|---|
| 1593 | |
|---|
| 1594 | |
|---|
| 1595 | Consequential stuff |
|---|
| 1596 | ~~~~~~~~~~~~~~~~~~~ |
|---|
| 1597 | * A 'wrapper' no longer has a WrapperInfo in the IdInfo. Instead, |
|---|
| 1598 | the InlineRule has a field identifying wrappers. |
|---|
| 1599 | |
|---|
| 1600 | * Of course, IfaceSyn and interface serialisation changes appropriately. |
|---|
| 1601 | |
|---|
| 1602 | * Making implication constraints inline nicely was a bit fiddly. In |
|---|
| 1603 | the end I added a var_inline field to HsBInd.VarBind, which is why |
|---|
| 1604 | this patch affects the type checker slightly |
|---|
| 1605 | |
|---|
| 1606 | * I made some changes to the way in which eta expansion happens in |
|---|
| 1607 | CorePrep, mainly to ensure that *arguments* that become let-bound |
|---|
| 1608 | are also eta-expanded. I'm still not too happy with the clarity |
|---|
| 1609 | and robustness fo the result. |
|---|
| 1610 | |
|---|
| 1611 | * We now complain if the programmer gives an INLINE pragma for |
|---|
| 1612 | a recursive function (prevsiously we just ignored it). Reason for |
|---|
| 1613 | change: we don't want an InlineRule on a LoopBreaker, because then |
|---|
| 1614 | we'd have to check for loop-breaker-hood at occurrence sites (which |
|---|
| 1615 | isn't currenlty done). Some tests need changing as a result. |
|---|
| 1616 | |
|---|
| 1617 | This patch has been in my tree for quite a while, so there are |
|---|
| 1618 | probably some other minor changes. |
|---|
| 1619 | |
|---|
| 1620 | ] |
|---|
| 1621 | [Add -fpass-case-bndr-to-join-points |
|---|
| 1622 | simonpj@microsoft.com**20081205105159 |
|---|
| 1623 | |
|---|
| 1624 | See Note [Passing the case binder to join points] in Simplify.lhs |
|---|
| 1625 | The default now is *not* to pass the case binder. There are some |
|---|
| 1626 | nofib results with the above note; the effect is almost always |
|---|
| 1627 | negligible. |
|---|
| 1628 | |
|---|
| 1629 | I don't expect this flag to be used by users (hence no docs). It's just |
|---|
| 1630 | there to let me try the performance effects of switching on and off. |
|---|
| 1631 | |
|---|
| 1632 | ] |
|---|
| 1633 | [Add static flag -fsimple-list-literals |
|---|
| 1634 | simonpj@microsoft.com**20081205105002 |
|---|
| 1635 | |
|---|
| 1636 | The new static flag -fsimple-list-literals makes ExplicitList literals |
|---|
| 1637 | be desugared in the straightforward way, rather than using 'build' as |
|---|
| 1638 | now. See SLPJ comments with Note [Desugaring explicit lists]. |
|---|
| 1639 | |
|---|
| 1640 | I don't expect this flag to be used by users (hence no docs). It's just |
|---|
| 1641 | there to let me try the performance effects of switching on and off. |
|---|
| 1642 | |
|---|
| 1643 | ] |
|---|
| 1644 | [Comments only in OccurAnal |
|---|
| 1645 | simonpj@microsoft.com**20081205103252] |
|---|
| 1646 | [Comments only |
|---|
| 1647 | simonpj@microsoft.com**20081205102437] |
|---|
| 1648 | [Layout only |
|---|
| 1649 | simonpj@microsoft.com**20081205102252] |
|---|
| 1650 | [Comments only (Note [Entering error thunks]) |
|---|
| 1651 | simonpj@microsoft.com**20081205102149] |
|---|
| 1652 | [Make CoreToStg a little more robust to eta expansion |
|---|
| 1653 | simonpj@microsoft.com**20081205101932] |
|---|
| 1654 | [Add no-op case for addIdSpecialisations (very minor optimisation) |
|---|
| 1655 | simonpj@microsoft.com**20081205101022] |
|---|
| 1656 | [Trim redundant import |
|---|
| 1657 | simonpj@microsoft.com**20081205101006] |
|---|
| 1658 | [Make CoreTidy retain deadness info (better -ddump-simpl) |
|---|
| 1659 | simonpj@microsoft.com**20081205100518 |
|---|
| 1660 | |
|---|
| 1661 | GHC now retains more robust information about dead variables; but |
|---|
| 1662 | CoreTidy was throwing it away. This patch makes CoreTidy retain it, |
|---|
| 1663 | which gives better output for -ddump-simpl. |
|---|
| 1664 | |
|---|
| 1665 | New opportunity: shrink interface files by using wildcards for dead variables. |
|---|
| 1666 | |
|---|
| 1667 | |
|---|
| 1668 | ] |
|---|
| 1669 | [Remove INLINE pragmas on recursive functions |
|---|
| 1670 | simonpj@microsoft.com**20081205100353 |
|---|
| 1671 | |
|---|
| 1672 | INLINE pragmas on recursive functions are ignored; and this |
|---|
| 1673 | is checked in my upcoming patch for inlinings. |
|---|
| 1674 | |
|---|
| 1675 | ] |
|---|
| 1676 | [Comments only (on Activation) |
|---|
| 1677 | simonpj@microsoft.com**20081205100139] |
|---|
| 1678 | [We need to tell cabal-bin which version of Cabal to use |
|---|
| 1679 | Ian Lynagh <igloo@earth.li>**20081203123208 |
|---|
| 1680 | Otherwise, if the bootstrapping compiler has a newer version, we get |
|---|
| 1681 | a mismatch between the version used to compile ghc-prim's Setup.hs and |
|---|
| 1682 | the version that installPackage uses. |
|---|
| 1683 | ] |
|---|
| 1684 | [Document 'loadModule'. |
|---|
| 1685 | Thomas Schilling <nominolo@googlemail.com>**20081202154800] |
|---|
| 1686 | [Add 'needsTemplateHaskell' utility function and document why one might |
|---|
| 1687 | Thomas Schilling <nominolo@googlemail.com>**20081202152358 |
|---|
| 1688 | want to use it. |
|---|
| 1689 | ] |
|---|
| 1690 | [Documentation only. |
|---|
| 1691 | Thomas Schilling <nominolo@googlemail.com>**20081202150158] |
|---|
| 1692 | [Export 'succeeded' and 'failed' helper functions. |
|---|
| 1693 | Thomas Schilling <nominolo@googlemail.com>**20081202144451] |
|---|
| 1694 | [Put full ImportDecls in ModSummary instead of just ModuleNames |
|---|
| 1695 | Simon Marlow <marlowsd@gmail.com>**20081202133736 |
|---|
| 1696 | ... and use it to make ghc -M generate correct cross-package |
|---|
| 1697 | dependencies when using package-qualified imports (needed for the new |
|---|
| 1698 | build system). Since we're already parsing the ImportDecl from the |
|---|
| 1699 | source file, there seems no good reason not to keep it in the |
|---|
| 1700 | ModSummary, it might be useful for other things too. |
|---|
| 1701 | ] |
|---|
| 1702 | [ghc -M: need to add a dep on Prelude unless -fno-implicit-prelude is on |
|---|
| 1703 | Simon Marlow <marlowsd@gmail.com>**20081128165707] |
|---|
| 1704 | [make -include-pkg-deps work (not sure when this got lost) |
|---|
| 1705 | Simon Marlow <marlowsd@gmail.com>**20081128135746] |
|---|
| 1706 | [Fix more problems caused by padding in the Capability structure |
|---|
| 1707 | Simon Marlow <marlowsd@gmail.com>**20081202120735 |
|---|
| 1708 | Fixes crashes on Windows and Sparc |
|---|
| 1709 | ] |
|---|
| 1710 | [add missing case to Ord GlobalReg (EagerBlackhole == EagerBlackhole) |
|---|
| 1711 | Simon Marlow <marlowsd@gmail.com>**20081128130106] |
|---|
| 1712 | [Better error message for fundep conflict |
|---|
| 1713 | simonpj@microsoft.com**20081201162845] |
|---|
| 1714 | [Fix typo in quasi-quote documentation's sample. |
|---|
| 1715 | shelarcy <shelarcy@gmail.com>**20081129024344] |
|---|
| 1716 | [Remove the v_Split_info global variable and use a field of dflags instead |
|---|
| 1717 | Ian Lynagh <igloo@earth.li>**20081130152403] |
|---|
| 1718 | [Document the --machine-readable RTS flag |
|---|
| 1719 | Ian Lynagh <igloo@earth.li>**20081130152311] |
|---|
| 1720 | [Let 'loadModule' generate proper code depending on the 'hscTarget'. |
|---|
| 1721 | Thomas Schilling <nominolo@googlemail.com>**20081128164412 |
|---|
| 1722 | |
|---|
| 1723 | With this change it should be possible to perform something similar to |
|---|
| 1724 | 'load' by traversing the module graph in dependency order and calling |
|---|
| 1725 | '{parse,typecheck,load}Module' on each. Of course, if you want smart |
|---|
| 1726 | recompilation checking you should still use 'load'. |
|---|
| 1727 | ] |
|---|
| 1728 | [Expose a separate 'hscBackend' phase for 'HsCompiler' and change |
|---|
| 1729 | Thomas Schilling <nominolo@googlemail.com>**20081128163746 |
|---|
| 1730 | parameter to 'InteractiveStatus' to a 'Maybe'. |
|---|
| 1731 | ] |
|---|
| 1732 | [Whoops, *don't* reset the complete session in 'withLocalCallbacks'. |
|---|
| 1733 | Thomas Schilling <nominolo@googlemail.com>**20081128150727] |
|---|
| 1734 | [Use a record instead of a typeclass for 'HsCompiler'. This is mostly |
|---|
| 1735 | Thomas Schilling <nominolo@googlemail.com>**20081128121947 |
|---|
| 1736 | equivalent to a typeclass implementation that uses a functional |
|---|
| 1737 | dependency from the target mode to the result type. |
|---|
| 1738 | ] |
|---|
| 1739 | [Remove dead code |
|---|
| 1740 | Ian Lynagh <igloo@earth.li>**20081128193831] |
|---|
| 1741 | [Update docs not to talk about deprecated -optdep-* flags; fixes trac #2773 |
|---|
| 1742 | Ian Lynagh <igloo@earth.li>**20081128193633] |
|---|
| 1743 | [Use relative URLs in the GHC API haddock docs; fixes #2755 |
|---|
| 1744 | Ian Lynagh <igloo@earth.li>**20081128184511] |
|---|
| 1745 | [Teach runghc about --help; fixes trac #2757 |
|---|
| 1746 | Ian Lynagh <igloo@earth.li>**20081128191706] |
|---|
| 1747 | [Use a per-session data structure for callbacks. Make 'WarnErrLogger' |
|---|
| 1748 | Thomas Schilling <nominolo@googlemail.com>**20081128103628 |
|---|
| 1749 | part of it. |
|---|
| 1750 | |
|---|
| 1751 | Part of the GHC API essentially represents a compilation framework. |
|---|
| 1752 | The difference of a *framework* as opposed to a *library* is that the |
|---|
| 1753 | overall structure of the functionality is pre-defined but certain |
|---|
| 1754 | details can be customised via callbacks. (Also known as the Hollywood |
|---|
| 1755 | Principle: "Don't call us, we'll call you.") |
|---|
| 1756 | |
|---|
| 1757 | This patch introduces a per-session data structure that contains all |
|---|
| 1758 | the callbacks instead of adding lots of small function arguments |
|---|
| 1759 | whenever we want to give the user more control over certain parts of |
|---|
| 1760 | the API. This should also help with future changes: Adding a new |
|---|
| 1761 | callback doesn't break old code since code that doesn't know about the |
|---|
| 1762 | new callback will use the (hopefully sane) default implementation. |
|---|
| 1763 | |
|---|
| 1764 | Overall, however, we should try and keep the number of callbacks small |
|---|
| 1765 | and well-defined (and provide useful defaults) and use simple library |
|---|
| 1766 | routines for the rest. |
|---|
| 1767 | ] |
|---|
| 1768 | [Improve error message for #2739 (but no fix). |
|---|
| 1769 | Thomas Schilling <nominolo@googlemail.com>**20081127135725 |
|---|
| 1770 | |
|---|
| 1771 | This patch changes 'loadModule' to define a fake linkable. The |
|---|
| 1772 | previous implementation of providing no linkable at all violated a |
|---|
| 1773 | pre-condition in the ByteCode linker. This doesn't fix #2739, but it |
|---|
| 1774 | improves the error message a bit. |
|---|
| 1775 | ] |
|---|
| 1776 | [Remove the packing I added recently to the Capability structure |
|---|
| 1777 | Simon Marlow <marlowsd@gmail.com>**20081128105046 |
|---|
| 1778 | The problem is that the packing caused some unaligned loads, which |
|---|
| 1779 | lead to bus errors on Sparc (and reduced performance elsewhere, |
|---|
| 1780 | presumably). |
|---|
| 1781 | ] |
|---|
| 1782 | [don't emit CmmComments for now |
|---|
| 1783 | Simon Marlow <marlowsd@gmail.com>**20081127090145 |
|---|
| 1784 | - if the string contains */, we need to fix it (demonstrated by |
|---|
| 1785 | building Cabal with -fvia-C) |
|---|
| 1786 | - the strings can get quite large, so we probably only want to |
|---|
| 1787 | inject comments when some debugging option is on. |
|---|
| 1788 | ] |
|---|
| 1789 | [Collect instead of print warnings in 'warnUnnecessarySourceImports'. |
|---|
| 1790 | Thomas Schilling <nominolo@googlemail.com>**20081127102534] |
|---|
| 1791 | [Force recompilation of BCOs when they were compiled in HscNothing mode. |
|---|
| 1792 | Thomas Schilling <nominolo@googlemail.com>**20081126183402 |
|---|
| 1793 | |
|---|
| 1794 | Previously, loading a set of modules in HscNothing mode and then |
|---|
| 1795 | switching to HscInterpreted could lead to crashes since modules |
|---|
| 1796 | compiled with HscNothing were thought to be valid bytecode objects. |
|---|
| 1797 | |
|---|
| 1798 | This patch forces recompilation in these cases, hence switching between |
|---|
| 1799 | HscNothing and HscInterpreted should be safe now. |
|---|
| 1800 | ] |
|---|
| 1801 | [Documentation only: Add module description for HscMain. |
|---|
| 1802 | Thomas Schilling <nominolo@googlemail.com>**20081126134344] |
|---|
| 1803 | [Include GHCi files in ctags/etags. |
|---|
| 1804 | Thomas Schilling <nominolo@googlemail.com>**20081126122801] |
|---|
| 1805 | [drop some debugging traces and use only one flag for new codegen |
|---|
| 1806 | dias@eecs.harvard.edu**20081126180808] |
|---|
| 1807 | [one more missing patch from new codegen path |
|---|
| 1808 | dias@eecs.harvard.edu**20081126165742] |
|---|
| 1809 | [Fix Trac #2817 (TH syntax -> HsSyn conversion) |
|---|
| 1810 | simonpj@microsoft.com**20081126154022] |
|---|
| 1811 | [Fix Trac #2756: CorePrep strictness bug |
|---|
| 1812 | simonpj@microsoft.com**20081126143448] |
|---|
| 1813 | [Format output for :t more nicely |
|---|
| 1814 | simonpj@microsoft.com**20081126134814] |
|---|
| 1815 | [Fix Trac #2766: printing operator type variables |
|---|
| 1816 | simonpj@microsoft.com**20081126132202] |
|---|
| 1817 | [Fix build following codegen patch |
|---|
| 1818 | simonpj@microsoft.com**20081126125526] |
|---|
| 1819 | [Removed warnings, made Haddock happy, added examples in documentation |
|---|
| 1820 | dias@eecs.harvard.edu**20081017170707 |
|---|
| 1821 | The interesting examples talk about our story with heap checks in |
|---|
| 1822 | case alternatives and our story with the case scrutinee as a Boolean. |
|---|
| 1823 | ] |
|---|
| 1824 | [Fixed linear regalloc bug, dropped some tracing code |
|---|
| 1825 | dias@eecs.harvard.edu**20081016104218 |
|---|
| 1826 | o The linear-scan register allocator sometimes allocated a block |
|---|
| 1827 | before allocating one of its predecessors, which could lead |
|---|
| 1828 | to inconsistent allocations. Now, we allocate a block only |
|---|
| 1829 | if a predecessor has set the "incoming" assignments for the block |
|---|
| 1830 | (or if it's the procedure's entry block). |
|---|
| 1831 | o Also commented out some tracing code on the new codegen path. |
|---|
| 1832 | ] |
|---|
| 1833 | [Keep update frames live even in functions that never return |
|---|
| 1834 | dias@eecs.harvard.edu**20081014165437 |
|---|
| 1835 | An unusual case, but without it: |
|---|
| 1836 | (a) we had an assertion failure |
|---|
| 1837 | (b) we can overwrite the caller's infotable, which might cause |
|---|
| 1838 | the garbage collector to collect live data. |
|---|
| 1839 | Better to keep the update frame live at all call sites, |
|---|
| 1840 | not just at returns. |
|---|
| 1841 | ] |
|---|
| 1842 | [Removed space and time inefficiency in procpoint splitting |
|---|
| 1843 | dias@eecs.harvard.edu**20081014160354 |
|---|
| 1844 | I was adding extra jumps to every procpoint, even when the split-off graph |
|---|
| 1845 | referred to only some of the procpoints. No effect on correctness, |
|---|
| 1846 | but a big effect on space/time efficiency when there are lots of procpoints... |
|---|
| 1847 | ] |
|---|
| 1848 | [Clarify the SRT building process |
|---|
| 1849 | dias@eecs.harvard.edu**20081014140202 |
|---|
| 1850 | Before: building a closure that would build an SRT given the top-level |
|---|
| 1851 | SRT. It was somewhat difficult to understand the control flow, and it |
|---|
| 1852 | may have had held onto some data structures long after they should be dead. |
|---|
| 1853 | Now, I just bundle the info we need about CAFs along with the procedure |
|---|
| 1854 | and directly call a new top-level function to build the SRTs later. |
|---|
| 1855 | ] |
|---|
| 1856 | [Don't adjust hp up when the case scrutinee won't allocate |
|---|
| 1857 | dias@eecs.harvard.edu**20081014112618 |
|---|
| 1858 | |
|---|
| 1859 | If the case scrutinee can't allocate, we don't need to do a heap |
|---|
| 1860 | check in the case alternatives. (A previous patch got that right.) |
|---|
| 1861 | In that case, we had better not adjust the heap pointer to recover |
|---|
| 1862 | unused stack space before evaluating the scrutinee -- because we |
|---|
| 1863 | aren't going to reallocate for the case alternative. |
|---|
| 1864 | ] |
|---|
| 1865 | [Floating infotables were reversed in C back end |
|---|
| 1866 | dias@eecs.harvard.edu**20081013152718] |
|---|
| 1867 | [forgot a few files |
|---|
| 1868 | dias@eecs.harvard.edu**20081013134251] |
|---|
| 1869 | [Big collection of patches for the new codegen branch. |
|---|
| 1870 | dias@eecs.harvard.edu**20081013132556 |
|---|
| 1871 | o Fixed bug that emitted the copy-in code for closure entry |
|---|
| 1872 | in the wrong place -- at the initialization of the closure. |
|---|
| 1873 | o Refactored some of the closure entry code. |
|---|
| 1874 | o Added code to check that no LocalRegs are live-in to a procedure |
|---|
| 1875 | -- trip up some buggy programs earlier |
|---|
| 1876 | o Fixed environment bindings for thunks |
|---|
| 1877 | -- we weren't (re)binding the free variables in a thunk |
|---|
| 1878 | o Fixed a bug in proc-point splitting that dropped some updates |
|---|
| 1879 | to the entry block in a procedure. |
|---|
| 1880 | o Fixed improper calls to code that generates CmmLit's for strings |
|---|
| 1881 | o New invariant on cg_loc in CgIdInfo: the expression is always tagged |
|---|
| 1882 | o Code to load free vars on entry to a thunk was (wrongly) placed before |
|---|
| 1883 | the heap check. |
|---|
| 1884 | o Some of the StgCmm code was redundantly passing around Id's |
|---|
| 1885 | along with CgIdInfo's; no more. |
|---|
| 1886 | o Initialize the LocalReg's that point to a closure before allocating and |
|---|
| 1887 | initializing the closure itself -- otherwise, we have problems with |
|---|
| 1888 | recursive closure bindings |
|---|
| 1889 | o BlockEnv and BlockSet types are now abstract. |
|---|
| 1890 | o Update frames: |
|---|
| 1891 | - push arguments in Old call area |
|---|
| 1892 | - keep track of the return sp in the FCode monad |
|---|
| 1893 | - keep the return sp in every call, tail call, and return |
|---|
| 1894 | (because it might be different at different call sites, |
|---|
| 1895 | e.g. tail calls to the gc after a heap check are performed |
|---|
| 1896 | before pushing the update frame) |
|---|
| 1897 | - set the sp appropriately on returns and tail calls |
|---|
| 1898 | o Reduce call, tail call, and return to a single LastCall node |
|---|
| 1899 | o Added slow entry code, using different calling conventions on entry and tail call |
|---|
| 1900 | o More fixes to the calling convention code. |
|---|
| 1901 | The tricky stuff is all about the closure environment: it must be passed in R1, |
|---|
| 1902 | but in non-closures, there is no such argument, so we can't treat all arguments |
|---|
| 1903 | the same way: the closure environment is special. Maybe the right step forward |
|---|
| 1904 | would be to define a different calling convention for closure arguments. |
|---|
| 1905 | o Let-no-escapes need to be emitted out-of-line -- otherwise, we drop code. |
|---|
| 1906 | o Respect RTS requirement of word alignment for pointers |
|---|
| 1907 | My stack allocation can pack sub-word values into a single word on the stack, |
|---|
| 1908 | but it wasn't requiring word-alignment for pointers. It does now, |
|---|
| 1909 | by word-aligning both pointer registers and call areas. |
|---|
| 1910 | o CmmLint was over-aggresively ruling out non-word-aligned memory references, |
|---|
| 1911 | which may be kosher now that we can spill small values into a single word. |
|---|
| 1912 | o Wrong label order on a conditional branch when compiling switches. |
|---|
| 1913 | o void args weren't dropped in many cases. |
|---|
| 1914 | To help prevent this kind of mistake, I defined a NonVoid wrapper, |
|---|
| 1915 | which I'm applying only to Id's for now, although there are probably |
|---|
| 1916 | other good candidates. |
|---|
| 1917 | o A little code refactoring: separate modules for procpoint analysis splitting, |
|---|
| 1918 | stack layout, and building infotables. |
|---|
| 1919 | o Stack limit check: insert along with the heap limit check, using a symbolic |
|---|
| 1920 | constant (a special CmmLit), then replace it when the stack layout is known. |
|---|
| 1921 | o Removed last node: MidAddToContext |
|---|
| 1922 | o Adding block id as a literal: means that the lowering of the calling conventions |
|---|
| 1923 | no longer has to produce labels early, which was inhibiting common-block elimination. |
|---|
| 1924 | Will also make it easier for the non-procpoint-splitting path. |
|---|
| 1925 | o Info tables: don't try to describe the update frame! |
|---|
| 1926 | o Over aggressive use of NonVoid!!!! |
|---|
| 1927 | Don't drop the non-void args before setting the type of the closure!!! |
|---|
| 1928 | o Sanity checking: |
|---|
| 1929 | Added a pass to stub dead dead slots on the stack |
|---|
| 1930 | (only ~10 lines with the dataflow framework) |
|---|
| 1931 | o More sanity checking: |
|---|
| 1932 | Check that incoming pointer arguments are non-stubbed. |
|---|
| 1933 | Note: these checks are still subject to dead-code removal, but they should |
|---|
| 1934 | still be quite helpful. |
|---|
| 1935 | o Better sanity checking: why stop at function arguments? |
|---|
| 1936 | Instead, in mkAssign, check that _any_ assignment to a pointer type is non-null |
|---|
| 1937 | -- the sooner the crash, the easier it is to debug. |
|---|
| 1938 | Still need to add the debugging flag to turn these checks on explicitly. |
|---|
| 1939 | o Fixed yet another calling convention bug. |
|---|
| 1940 | This time, the calls to the GC were wrong. I've added a new convention |
|---|
| 1941 | for GC calls and invoked it where appropriate. |
|---|
| 1942 | We should really straighten out the calling convention stuff: |
|---|
| 1943 | some of the code (and documentation) is spread across the compiler, |
|---|
| 1944 | and there's some magical use of the node register that should really |
|---|
| 1945 | be handled (not avoided) by calling conventions. |
|---|
| 1946 | o Switch bug: the arms in mkCmmLitSwitch weren't returning to a single join point. |
|---|
| 1947 | o Environment shadowing problem in Stg->Cmm: |
|---|
| 1948 | When a closure f is bound at the top-level, we should not bind f to the |
|---|
| 1949 | node register on entry to the closure. |
|---|
| 1950 | Why? Because if the body of f contains a let-bound closure g that refers |
|---|
| 1951 | to f, we want to make sure that it refers to the static closure for f. |
|---|
| 1952 | Normally, this would all be fine, because when we compile a closure, |
|---|
| 1953 | we rebind free variables in the environment. But f doesn't look like |
|---|
| 1954 | a free variable because it's a static value. So, the binding for f |
|---|
| 1955 | remains in the environment when we compile g, inconveniently referring |
|---|
| 1956 | to the wrong thing. |
|---|
| 1957 | Now, I bind the variable in the local environment only if the closure is not |
|---|
| 1958 | bound at the top level. It's still okay to make assumptions about the |
|---|
| 1959 | node holding the closure environment; we just won't find the binding |
|---|
| 1960 | in the environment, so code that names the closure will now directly |
|---|
| 1961 | get the label of the static closure, not the node register holding a |
|---|
| 1962 | pointer to the static closure. |
|---|
| 1963 | o Don't generate bogus Cmm code containing SRTs during the STG -> Cmm pass! |
|---|
| 1964 | The tables made reference to some labels that don't exist when we compute and |
|---|
| 1965 | generate the tables in the back end. |
|---|
| 1966 | o Safe foreign calls need some special treatment (at least until we have the integrated |
|---|
| 1967 | codegen). In particular: |
|---|
| 1968 | o they need info tables |
|---|
| 1969 | o they are not procpoints -- the successor had better be in the same procedure |
|---|
| 1970 | o we cannot (yet) implement the calling conventions early, which means we have |
|---|
| 1971 | to carry the calling-conv info all the way to the end |
|---|
| 1972 | o We weren't following the old convention when registering a module. |
|---|
| 1973 | Now, we use update frames to push any new modules that have to be registered |
|---|
| 1974 | and enter the youngest one on the stack. |
|---|
| 1975 | We also use the update frame machinery to specify that the return should pop |
|---|
| 1976 | the return address off the stack. |
|---|
| 1977 | o At each safe foreign call, an infotable must be at the bottom of the stack, |
|---|
| 1978 | and the TSO->sp must point to it. |
|---|
| 1979 | o More problems with void args in a direct call to a function: |
|---|
| 1980 | We were checking the args (minus voids) to check whether the call was saturated, |
|---|
| 1981 | which caused problems when the function really wasn't saturated because it |
|---|
| 1982 | took an extra void argument. |
|---|
| 1983 | o Forgot to distinguish integer != from floating != during Stg->Cmm |
|---|
| 1984 | o Updating slotEnv and areaMap to include safe foreign calls |
|---|
| 1985 | The dataflow analyses that produce the slotEnv and areaMap give |
|---|
| 1986 | results for each basic block, but we also need the results for |
|---|
| 1987 | a safe foreign call, which is a middle node. |
|---|
| 1988 | After running the dataflow analysis, we have another pass that |
|---|
| 1989 | updates the results to includ any safe foreign calls. |
|---|
| 1990 | o Added a static flag for the debugging technique that inserts |
|---|
| 1991 | instructions to stub dead slots on the stack and crashes when |
|---|
| 1992 | a stubbed value is loaded into a pointer-typed LocalReg. |
|---|
| 1993 | o C back end expects to see return continuations before their call sites. |
|---|
| 1994 | Sorted the flowgraphs appropriately after splitting. |
|---|
| 1995 | o PrimOp calling conventions are special -- unlimited registers, no stack |
|---|
| 1996 | Yet another calling convention... |
|---|
| 1997 | o More void value problems: if the RHS of a case arm is a void-typed variable, |
|---|
| 1998 | don't try to return it. |
|---|
| 1999 | o When calling some primOp, they may allocate memory; if so, we need to |
|---|
| 2000 | do a heap check when we return from the call. |
|---|
| 2001 | |
|---|
| 2002 | ] |
|---|
| 2003 | [Merging in the new codegen branch |
|---|
| 2004 | dias@eecs.harvard.edu**20080814124027 |
|---|
| 2005 | This merge does not turn on the new codegen (which only compiles |
|---|
| 2006 | a select few programs at this point), |
|---|
| 2007 | but it does introduce some changes to the old code generator. |
|---|
| 2008 | |
|---|
| 2009 | The high bits: |
|---|
| 2010 | 1. The Rep Swamp patch is finally here. |
|---|
| 2011 | The highlight is that the representation of types at the |
|---|
| 2012 | machine level has changed. |
|---|
| 2013 | Consequently, this patch contains updates across several back ends. |
|---|
| 2014 | 2. The new Stg -> Cmm path is here, although it appears to have a |
|---|
| 2015 | fair number of bugs lurking. |
|---|
| 2016 | 3. Many improvements along the CmmCPSZ path, including: |
|---|
| 2017 | o stack layout |
|---|
| 2018 | o some code for infotables, half of which is right and half wrong |
|---|
| 2019 | o proc-point splitting |
|---|
| 2020 | ] |
|---|
| 2021 | [Major clean-up of HscMain. |
|---|
| 2022 | Thomas Schilling <nominolo@googlemail.com>**20081125153201 |
|---|
| 2023 | |
|---|
| 2024 | This patch entails a major restructuring of HscMain and a small bugfix |
|---|
| 2025 | to MkIface (which required the restructuring in HscMain). |
|---|
| 2026 | |
|---|
| 2027 | In MkIface: |
|---|
| 2028 | |
|---|
| 2029 | - mkIface* no longer outputs orphan warnings directly and also no |
|---|
| 2030 | longer quits GHC when -Werror is set. Instead, errors are |
|---|
| 2031 | reported using the common IO (Messages, Maybe result) scheme. |
|---|
| 2032 | |
|---|
| 2033 | In HscMain: |
|---|
| 2034 | |
|---|
| 2035 | - Get rid of the 'Comp' monad. This monad was mostly GhcMonad + two |
|---|
| 2036 | reader arguments, a ModSummary for the currently compiled module |
|---|
| 2037 | and a possible old interface. The latter actually lead to a small |
|---|
| 2038 | space-leak since only its hash was needed (to check whether the |
|---|
| 2039 | newly-generated interface file was the same as the original one). |
|---|
| 2040 | |
|---|
| 2041 | Functions originally of type 'Comp' now only take the arguments |
|---|
| 2042 | that they actually need. This leads to slighly longer argument |
|---|
| 2043 | lists in some places, however, it is now much easier to see what |
|---|
| 2044 | is actually going on. |
|---|
| 2045 | |
|---|
| 2046 | - Get rid of 'myParseModule'. Rename 'parseFile' to 'hscParse'. |
|---|
| 2047 | |
|---|
| 2048 | - Join 'deSugarModule' and 'hscDesugar' (keeping the latter). |
|---|
| 2049 | |
|---|
| 2050 | - Rename 'typecheck{Rename}Module{'}' to 'hscTypecheck{Rename}'. |
|---|
| 2051 | One variant keeps the renamed syntax, the other doesn't. |
|---|
| 2052 | |
|---|
| 2053 | - Parameterise 'HscStatus', so that 'InteractiveStatus' is just a |
|---|
| 2054 | different parameterisation of 'HscStatus'. |
|---|
| 2055 | |
|---|
| 2056 | - 'hscCompile{OneShot,Batch,Nothing,Interactive}' are now |
|---|
| 2057 | implemented using a (local) typeclass called 'HsCompiler'. The |
|---|
| 2058 | idea is to make the common structure more obvious. Using this |
|---|
| 2059 | typeclass we now have two functions 'genericHscCompile' (original |
|---|
| 2060 | 'hscCompiler') and 'genericHscRecompile' (original 'genComp') |
|---|
| 2061 | describing the default pipeline. The methods of the typeclass |
|---|
| 2062 | describe a sort of "hook" interface (in OO-terms this would be |
|---|
| 2063 | called the "template method" pattern). |
|---|
| 2064 | |
|---|
| 2065 | One problem with this approach is that we parameterise over the |
|---|
| 2066 | /result/ type which, in fact, is not actually different for |
|---|
| 2067 | "nothing" and "batch" mode. To avoid functional dependencies or |
|---|
| 2068 | associated types, we use type tags to make them artificially |
|---|
| 2069 | different and parameterise the type class over the result type. |
|---|
| 2070 | A perhaps better approach might be to use records instead. |
|---|
| 2071 | |
|---|
| 2072 | - Drop some redundant 'HscEnv' arguments. These were likely |
|---|
| 2073 | different from what 'getSession' would return because during |
|---|
| 2074 | compilation we temporarily set the module's DynFlags as well as a |
|---|
| 2075 | few other fields. We now use the 'withTempSession' combinator to |
|---|
| 2076 | temporarily change the 'HscEnv' and automatically restore the |
|---|
| 2077 | original session after the enclosed action has returned (even in |
|---|
| 2078 | case of exceptions). |
|---|
| 2079 | |
|---|
| 2080 | - Rename 'hscCompile' to 'hscGenHardCode' (since that is what it |
|---|
| 2081 | does). |
|---|
| 2082 | |
|---|
| 2083 | Calls in 'GHC' and 'DriverPipeline' accordingly needed small |
|---|
| 2084 | adaptions. |
|---|
| 2085 | ] |
|---|
| 2086 | [Fix Trac #2799: TcType.isOverloadedTy |
|---|
| 2087 | simonpj@microsoft.com**20081125110540 |
|---|
| 2088 | |
|---|
| 2089 | A missing case (for equality predicates) in isOverloadedTy make |
|---|
| 2090 | bindInstsOfLocalFuns/Pats do the wrong thing. Core Lint nailed it. |
|---|
| 2091 | |
|---|
| 2092 | Merge to 6.10 branch. |
|---|
| 2093 | |
|---|
| 2094 | ] |
|---|
| 2095 | [Fix #2740: we were missing the free variables on some expressions |
|---|
| 2096 | Simon Marlow <marlowsd@gmail.com>**20081125103113 |
|---|
| 2097 | Particularly boolean expresions: the conditional of an 'if', and |
|---|
| 2098 | guards, were missing their free variables. |
|---|
| 2099 | ] |
|---|
| 2100 | [Fix symbol macro names in Linker.c |
|---|
| 2101 | Thorkil Naur <naur@post11.tele.dk>**20081121160149] |
|---|
| 2102 | [Add a --machine-readable RTS flag |
|---|
| 2103 | Ian Lynagh <igloo@earth.li>**20081123152127 |
|---|
| 2104 | Currently it only affects the -t flag output |
|---|
| 2105 | ] |
|---|
| 2106 | [Return errors instead of dying in myParseModule. |
|---|
| 2107 | Thomas Schilling <nominolo@googlemail.com>**20081122154151] |
|---|
| 2108 | [Comments/Haddockification only. |
|---|
| 2109 | Thomas Schilling <nominolo@googlemail.com>**20081122143018] |
|---|
| 2110 | [Report source span instead of just source location for unused names. |
|---|
| 2111 | Thomas Schilling <nominolo@googlemail.com>**20081122142641] |
|---|
| 2112 | [Change 'handleFlagWarnings' to throw exceptions instead of dying. |
|---|
| 2113 | Thomas Schilling <nominolo@googlemail.com>**20081122130658 |
|---|
| 2114 | |
|---|
| 2115 | It now uses the standard warning log and error reporting mechanism. |
|---|
| 2116 | ] |
|---|
| 2117 | [Document exported functions in main/HeaderInfo. |
|---|
| 2118 | Thomas Schilling <nominolo@googlemail.com>**20081121145307] |
|---|
| 2119 | [Remove warning supression klugde in main/HeaderInfo |
|---|
| 2120 | Thomas Schilling <nominolo@googlemail.com>**20081121144155] |
|---|
| 2121 | [Use mutator threads to do GC, instead of having a separate pool of GC threads |
|---|
| 2122 | Simon Marlow <marlowsd@gmail.com>**20081121151233 |
|---|
| 2123 | |
|---|
| 2124 | Previously, the GC had its own pool of threads to use as workers when |
|---|
| 2125 | doing parallel GC. There was a "leader", which was the mutator thread |
|---|
| 2126 | that initiated the GC, and the other threads were taken from the pool. |
|---|
| 2127 | |
|---|
| 2128 | This was simple and worked fine for sequential programs, where we did |
|---|
| 2129 | most of the benchmarking for the parallel GC, but falls down for |
|---|
| 2130 | parallel programs. When we have N mutator threads and N cores, at GC |
|---|
| 2131 | time we would have to stop N-1 mutator threads and start up N-1 GC |
|---|
| 2132 | threads, and hope that the OS schedules them all onto separate cores. |
|---|
| 2133 | It practice it doesn't, as you might expect. |
|---|
| 2134 | |
|---|
| 2135 | Now we use the mutator threads to do GC. This works quite nicely, |
|---|
| 2136 | particularly for parallel programs, where each mutator thread scans |
|---|
| 2137 | its own spark pool, which is probably in its cache anyway. |
|---|
| 2138 | |
|---|
| 2139 | There are some flag changes: |
|---|
| 2140 | |
|---|
| 2141 | -g<n> is removed (-g1 is still accepted for backwards compat). |
|---|
| 2142 | There's no way to have a different number of GC threads than mutator |
|---|
| 2143 | threads now. |
|---|
| 2144 | |
|---|
| 2145 | -q1 Use one OS thread for GC (turns off parallel GC) |
|---|
| 2146 | -qg<n> Use parallel GC for generations >= <n> (default: 1) |
|---|
| 2147 | |
|---|
| 2148 | Using parallel GC only for generations >=1 works well for sequential |
|---|
| 2149 | programs. Compiling an ordinary sequential program with -threaded and |
|---|
| 2150 | running it with -N2 or more should help if you do a lot of GC. I've |
|---|
| 2151 | found that adding -qg0 (do parallel GC for generation 0 too) speeds up |
|---|
| 2152 | some parallel programs, but slows down some sequential programs. |
|---|
| 2153 | Being conservative, I left the threshold at 1. |
|---|
| 2154 | |
|---|
| 2155 | ToDo: document the new options. |
|---|
| 2156 | |
|---|
| 2157 | ] |
|---|
| 2158 | [we shouldn't update topBound in discardSparks() |
|---|
| 2159 | Simon Marlow <marlowsd@gmail.com>**20081121113539] |
|---|
| 2160 | [Throw SourceErrors instead of ProgramErrors in main/HeaderInfo. |
|---|
| 2161 | Thomas Schilling <nominolo@googlemail.com>**20081121141339 |
|---|
| 2162 | |
|---|
| 2163 | Parse errors during dependency analysis or options parsing really |
|---|
| 2164 | shouldn't kill GHC; this is particularly annoying for GHC API clients. |
|---|
| 2165 | ] |
|---|
| 2166 | [fix the build when !USE_MMAP |
|---|
| 2167 | Simon Marlow <marlowsd@gmail.com>**20081121085418] |
|---|
| 2168 | [round the size up to a page in mmapForLinker() instead of in the caller |
|---|
| 2169 | Simon Marlow <marlowsd@gmail.com>**20081120154014] |
|---|
| 2170 | [Fix a race in the deadlock-detection code |
|---|
| 2171 | Simon Marlow <marlowsd@gmail.com>**20081120112438 |
|---|
| 2172 | After a deadlock it was possible for the timer signal to remain off, |
|---|
| 2173 | which meant that the next deadlock would not be detected, and the |
|---|
| 2174 | system would hang. Spotted by conc047(threaded2). |
|---|
| 2175 | ] |
|---|
| 2176 | [error message wibble |
|---|
| 2177 | Simon Marlow <marlowsd@gmail.com>**20081120084901] |
|---|
| 2178 | [Fix flag name -XDisambiguateRecordFields |
|---|
| 2179 | simonpj@microsoft.com**20081120123205] |
|---|
| 2180 | [Fix regTableToCapability() if gcc introduces padding |
|---|
| 2181 | Simon Marlow <marlowsd@gmail.com>**20081119162910 |
|---|
| 2182 | Also avoid padding if possible using __attribute__((packed)) |
|---|
| 2183 | Fixes the Windows build |
|---|
| 2184 | ] |
|---|
| 2185 | [Fix 32-bit breakage |
|---|
| 2186 | Simon Marlow <marlowsd@gmail.com>**20081119145429] |
|---|
| 2187 | [Small refactoring, and add comments |
|---|
| 2188 | Simon Marlow <marlowsd@gmail.com>**20081119143702 |
|---|
| 2189 | I discovered a new invariant while experimenting (blackholing is not |
|---|
| 2190 | optional when using parallel GC), so documented it. |
|---|
| 2191 | ] |
|---|
| 2192 | [Fix some unsigned comparisions that should be signed |
|---|
| 2193 | Simon Marlow <marlowsd@gmail.com>**20081119143205 |
|---|
| 2194 | Fixes crashes when using reclaimSpark() (not used currently, but may |
|---|
| 2195 | be in the future). |
|---|
| 2196 | ] |
|---|
| 2197 | [Remove incorrect assertions in steal() |
|---|
| 2198 | Simon Marlow <marlowsd@gmail.com>**20081119143043] |
|---|
| 2199 | [don't run sparks if there are other threads on this Capability |
|---|
| 2200 | Simon Marlow <marlowsd@gmail.com>**20081114121022] |
|---|
| 2201 | [Fix typo (HAVE_LIBGMP => HAVE_LIB_GMP); omit local gmp includes if HAVE_LIB_GMP |
|---|
| 2202 | Simon Marlow <marlowsd@gmail.com>**20081119131056 |
|---|
| 2203 | If we're using the system's installed GMP, we don't want to be picking |
|---|
| 2204 | up the local gmp.h header file. |
|---|
| 2205 | |
|---|
| 2206 | Fixes 2469(ghci) for me, because it turns out the system's GMP is more |
|---|
| 2207 | up-to-date than GHC's version and has a fix for more recent versions |
|---|
| 2208 | of gcc. We also need to pull in a more recent GMP, but that's a |
|---|
| 2209 | separte issue. |
|---|
| 2210 | ] |
|---|
| 2211 | [Fix some more shutdown races |
|---|
| 2212 | Simon Marlow <marlowsd@gmail.com>**20081119124848 |
|---|
| 2213 | There were races between workerTaskStop() and freeTaskManager(): we |
|---|
| 2214 | need to be sure that all Tasks have exited properly before we start |
|---|
| 2215 | tearing things down. This isn't completely straighforward, see |
|---|
| 2216 | comments for details. |
|---|
| 2217 | ] |
|---|
| 2218 | [Add help messages about --with-editline-(includes,libraries) to the ghc configure script. |
|---|
| 2219 | Judah Jacobson <judah.jacobson@gmail.com>**20081114183334] |
|---|
| 2220 | [Add optional eager black-holing, with new flag -feager-blackholing |
|---|
| 2221 | Simon Marlow <marlowsd@gmail.com>**20081118142442 |
|---|
| 2222 | |
|---|
| 2223 | Eager blackholing can improve parallel performance by reducing the |
|---|
| 2224 | chances that two threads perform the same computation. However, it |
|---|
| 2225 | has a cost: one extra memory write per thunk entry. |
|---|
| 2226 | |
|---|
| 2227 | To get the best results, any code which may be executed in parallel |
|---|
| 2228 | should be compiled with eager blackholing turned on. But since |
|---|
| 2229 | there's a cost for sequential code, we make it optional and turn it on |
|---|
| 2230 | for the parallel package only. It might be a good idea to compile |
|---|
| 2231 | applications (or modules) with parallel code in with |
|---|
| 2232 | -feager-blackholing. |
|---|
| 2233 | |
|---|
| 2234 | ToDo: document -feager-blackholing. |
|---|
| 2235 | ] |
|---|
| 2236 | [Fix #2783: detect black-hole loops properly |
|---|
| 2237 | Simon Marlow <marlowsd@gmail.com>**20081117144515 |
|---|
| 2238 | At some point we regressed on detecting simple black-hole loops. This |
|---|
| 2239 | happened due to the introduction of duplicate-work detection for |
|---|
| 2240 | parallelism: a black-hole loop looks very much like duplicate work, |
|---|
| 2241 | except it's duplicate work being performed by the very same thread. |
|---|
| 2242 | So we have to detect and handle this case. |
|---|
| 2243 | ] |
|---|
| 2244 | [Fix warning on Windows (use deleteThread() not deleteThread_()) |
|---|
| 2245 | Simon Marlow <marlowsd@gmail.com>**20081117143047] |
|---|
| 2246 | [fix compile breakage on Windows |
|---|
| 2247 | Simon Marlow <marlowsd@gmail.com>**20081117142831] |
|---|
| 2248 | [Attempt to fix #2512 and #2063; add +RTS -xm<address> -RTS option |
|---|
| 2249 | Simon Marlow <marlowsd@gmail.com>**20081117120556 |
|---|
| 2250 | On x86_64, the RTS needs to allocate memory in the low 2Gb of the |
|---|
| 2251 | address space. On Linux we can do this with MAP_32BIT, but sometimes |
|---|
| 2252 | this doesn't work (#2512) and other OSs don't support it at all |
|---|
| 2253 | (#2063). So to work around this: |
|---|
| 2254 | |
|---|
| 2255 | - Try MAP_32BIT first, if available. |
|---|
| 2256 | |
|---|
| 2257 | - Otherwise, try allocating memory from a fixed address (by default |
|---|
| 2258 | 1Gb) |
|---|
| 2259 | |
|---|
| 2260 | - We now provide an option to configure the address to allocate |
|---|
| 2261 | from. This allows a workaround on machines where the default |
|---|
| 2262 | breaks, and also provides a way for people to test workarounds |
|---|
| 2263 | that we can incorporate in future releases. |
|---|
| 2264 | ] |
|---|
| 2265 | [Another shutdown fix |
|---|
| 2266 | Simon Marlow <marlowsd@gmail.com>**20081117094350 |
|---|
| 2267 | If we encounter a runnable thread during shutdown, just kill it. All |
|---|
| 2268 | the threads are supposed to be dead at this stage, but this catches |
|---|
| 2269 | threads that might have just returned from a foreign call, or were |
|---|
| 2270 | finalizers created by the GC. |
|---|
| 2271 | |
|---|
| 2272 | Fixes memo002(threaded1) |
|---|
| 2273 | ] |
|---|
| 2274 | [Correct an example in the users guide |
|---|
| 2275 | Ian Lynagh <igloo@earth.li>**20081116174938] |
|---|
| 2276 | [Fix gen_contents_index when not run inplace; trac #2764 |
|---|
| 2277 | Ian Lynagh <igloo@earth.li>**20081116174122 |
|---|
| 2278 | Based on a patch from juhpetersen. |
|---|
| 2279 | ] |
|---|
| 2280 | [close the temporary Handle before removing the file |
|---|
| 2281 | Simon Marlow <marlowsd@gmail.com>**20081114130958] |
|---|
| 2282 | [refactor: move unlockClosure() into SMPClosureOps() where it should be |
|---|
| 2283 | Simon Marlow <marlowsd@gmail.com>**20081114095817] |
|---|
| 2284 | [Omit definitions of cas() and xchg() in .hc code |
|---|
| 2285 | Simon Marlow <marlowsd@gmail.com>**20081114095738 |
|---|
| 2286 | They cause compilation errors (correctly) with newer gccs |
|---|
| 2287 | Shows up compiling the RTS via C, which happens on Windows |
|---|
| 2288 | ] |
|---|
| 2289 | [Don't put stdin into non-blocking mode (#2778, #2777) |
|---|
| 2290 | Simon Marlow <marlowsd@gmail.com>**20081114130546 |
|---|
| 2291 | This used to be necessary when our I/O library needed all FDs in |
|---|
| 2292 | O_NONBLOCK mode, and readline used to put stdin back into blocking |
|---|
| 2293 | mode. Nowadays the I/O library can cope with FDs in blocking mode, |
|---|
| 2294 | and #2778/#2777 show why this is important. |
|---|
| 2295 | ] |
|---|
| 2296 | [Rmoeve --enable-dotnet |
|---|
| 2297 | Simon Marlow <marlowsd@gmail.com>**20081114124929] |
|---|
| 2298 | [#2751: disourage --enable-shared in ./configure --help |
|---|
| 2299 | Simon Marlow <marlowsd@gmail.com>**20081114124748] |
|---|
| 2300 | [add a warning that --enable-shared is experimental |
|---|
| 2301 | Simon Marlow <marlowsd@gmail.com>**20081114104034] |
|---|
| 2302 | [lookupSymbol: revert to looking up both with and without the @N suffix |
|---|
| 2303 | Simon Marlow <marlowsd@gmail.com>**20081113122927] |
|---|
| 2304 | [#2768: fix compatibility problem with newer version of mingw |
|---|
| 2305 | Simon Marlow <marlowsd@gmail.com>**20081113114626] |
|---|
| 2306 | [notice ^C exceptions when waiting for I/O |
|---|
| 2307 | Simon Marlow <marlowsd@gmail.com>**20081113114342] |
|---|
| 2308 | [Fix a bug in the recompilation checking logic. |
|---|
| 2309 | Thomas Schilling <nominolo@googlemail.com>**20081113162653 |
|---|
| 2310 | |
|---|
| 2311 | Previously, using target HscNothing resulted in unnessesary |
|---|
| 2312 | recompilation because 'upsweep_mod' treated HscInterface specially. |
|---|
| 2313 | This patch changes relaxes this. |
|---|
| 2314 | |
|---|
| 2315 | When running GHC with debug level 5, 'upsweep_mod' will now also be |
|---|
| 2316 | more verbose about what it is doing. |
|---|
| 2317 | |
|---|
| 2318 | There is (at least) one possible remaining problem, though: When using |
|---|
| 2319 | target 'HscNothing' we generate a fake linkable to signal that we have |
|---|
| 2320 | processed a module. When switching to 'HscInterpreted' this may cause |
|---|
| 2321 | objects to not be recompiled. Switching from HscNothing to |
|---|
| 2322 | HscInterpreted is therefore only safe if we unload everything first. |
|---|
| 2323 | ] |
|---|
| 2324 | [Fix another subtle shutdown deadlock |
|---|
| 2325 | Simon Marlow <marlowsd@gmail.com>**20081113160005 |
|---|
| 2326 | The problem occurred when a thread tries to GC during shutdown. In |
|---|
| 2327 | order to GC it has to acquire all the Capabilities in the system, but |
|---|
| 2328 | during shutdown, some of the Capabilities have already been closed and |
|---|
| 2329 | can never be acquired. |
|---|
| 2330 | ] |
|---|
| 2331 | [Fix an extremely subtle deadlock bug on x86_64 |
|---|
| 2332 | Simon Marlow <marlowsd@gmail.com>**20081113155730 |
|---|
| 2333 | The recent_activity flag was an unsigned int, but we sometimes do a |
|---|
| 2334 | 64-bit xchg() on it, which overwrites the next word in memory. This |
|---|
| 2335 | happened to contain the sched_state flag, which is used to control the |
|---|
| 2336 | orderly shutdown of the system. If the xchg() happened during |
|---|
| 2337 | shutdown, the scheduler would get confused and deadlock. Don't you |
|---|
| 2338 | just love C? |
|---|
| 2339 | ] |
|---|
| 2340 | [move an assertion |
|---|
| 2341 | Simon Marlow <marlowsd@gmail.com>**20081113154542] |
|---|
| 2342 | [Always zap the trailing @N from symbols when looking up in a DLL |
|---|
| 2343 | Simon Marlow <marlowsd@gmail.com>**20081112111518 |
|---|
| 2344 | |
|---|
| 2345 | Fixes win32002(ghci) |
|---|
| 2346 | |
|---|
| 2347 | Previously we only did this for references from object files, but we |
|---|
| 2348 | should do it for all symbols, including those that GHCi looks up due |
|---|
| 2349 | to FFI calls from bytecode. |
|---|
| 2350 | ] |
|---|
| 2351 | [Only allocate a mark stack if we're actually doing marking |
|---|
| 2352 | Simon Marlow <marlowsd@gmail.com>**20081112112144 |
|---|
| 2353 | saves a bit of memory in major GCs |
|---|
| 2354 | ] |
|---|
| 2355 | [Fix parse error with older gccs (#2752) |
|---|
| 2356 | Simon Marlow <marlowsd@gmail.com>**20081111135344] |
|---|
| 2357 | [Fix to i386_insert_ffrees (#2724, #1944) |
|---|
| 2358 | Simon Marlow <marlowsd@gmail.com>**20081111125619 |
|---|
| 2359 | The i386 native code generator has to arrange that the FPU stack is |
|---|
| 2360 | clear on exit from any function that uses the FPU. Unfortunately it |
|---|
| 2361 | was getting this wrong (and has been ever since this code was written, |
|---|
| 2362 | I think): it was looking for basic blocks that used the FPU and adding |
|---|
| 2363 | the code to clear the FPU stack on any non-local exit from the block. |
|---|
| 2364 | In fact it should be doing this on a whole-function basis, rather than |
|---|
| 2365 | individual basic blocks. |
|---|
| 2366 | ] |
|---|
| 2367 | [Fix bootstrap with 6.10.1 on Windows |
|---|
| 2368 | Simon Marlow <marlowsd@gmail.com>**20081110134318 |
|---|
| 2369 | ghc-pkg doesn't understand the old syntax any more, so 'ghc-pkg -l' fails |
|---|
| 2370 | ] |
|---|
| 2371 | [Perform case-insensitive matching of path components in getBaseDir on Windows (Fixes bug 2743) |
|---|
| 2372 | Neil Mitchell <ndmitchell@gmail.com>**20081105134315] |
|---|
| 2373 | [Documentation only. Clarify that 'load*' may indeed throw SourceErrors. |
|---|
| 2374 | Thomas Schilling <nominolo@googlemail.com>**20081110175614 |
|---|
| 2375 | |
|---|
| 2376 | I don't think errors during dependency analysis should be passed to |
|---|
| 2377 | the logger. |
|---|
| 2378 | ] |
|---|
| 2379 | [Fix documentation (to say the opposite). |
|---|
| 2380 | Thomas Schilling <nominolo@googlemail.com>**20081110153819] |
|---|
| 2381 | [Fix line numbers in TAGS files. |
|---|
| 2382 | Thomas Schilling <nominolo@googlemail.com>**20081110153621] |
|---|
| 2383 | [Documentation only. |
|---|
| 2384 | Thomas Schilling <nominolo@googlemail.com>**20081110153456] |
|---|
| 2385 | [Add 'packageDbModules' function to GHC API. |
|---|
| 2386 | Thomas Schilling <nominolo@googlemail.com>**20081110143510 |
|---|
| 2387 | |
|---|
| 2388 | This function returns a list of all modules available through the |
|---|
| 2389 | package DB. |
|---|
| 2390 | |
|---|
| 2391 | MERGE TO 6.10 |
|---|
| 2392 | ] |
|---|
| 2393 | [We now require GHC 6.6, so we always have Applicative |
|---|
| 2394 | Ian Lynagh <igloo@earth.li>**20081108144723] |
|---|
| 2395 | [Remove a CPP test that's always true (__GLASGOW_HASKELL__ >= 605) |
|---|
| 2396 | Ian Lynagh <igloo@earth.li>**20081108144544] |
|---|
| 2397 | [Remove some dead code now that __GLASGOW_HASKELL__ >= 606 |
|---|
| 2398 | Ian Lynagh <igloo@earth.li>**20081108144459] |
|---|
| 2399 | [Remove some flag duplication from a Makefile |
|---|
| 2400 | Ian Lynagh <igloo@earth.li>**20081108144412] |
|---|
| 2401 | [ghc_ge_605 is now always YES |
|---|
| 2402 | Ian Lynagh <igloo@earth.li>**20081108144328] |
|---|
| 2403 | [Remove the GHC 6.4 unicode compat stuff; we can now just use Data.Char |
|---|
| 2404 | Ian Lynagh <igloo@earth.li>**20081108143423] |
|---|
| 2405 | [Fix libffi bindist |
|---|
| 2406 | Clemens Fruhwirth <clemens@endorphin.org>**20081108094725] |
|---|
| 2407 | [Replace couple of fromJust with expectJust |
|---|
| 2408 | Clemens Fruhwirth <clemens@endorphin.org>**20081107160735] |
|---|
| 2409 | [Bugfix for patch "Do not filter the rts from linked libraries..." (#2745) |
|---|
| 2410 | Simon Marlow <marlowsd@gmail.com>**20081107092925 |
|---|
| 2411 | The sense of the #ifdef was wrong |
|---|
| 2412 | ] |
|---|
| 2413 | [fix via-C compilation: import ghczmprim_GHCziBool_False_closure |
|---|
| 2414 | Simon Marlow <marlowsd@gmail.com>**20081107090432] |
|---|
| 2415 | [disable instance MonadPlus CoreM for GHC <= 6.6 |
|---|
| 2416 | Simon Marlow <marlowsd@gmail.com>**20081107085250] |
|---|
| 2417 | [re-instate counting of sparks converted |
|---|
| 2418 | Simon Marlow <marlowsd@gmail.com>**20081106160810 |
|---|
| 2419 | lost in patch "Run sparks in batches" |
|---|
| 2420 | ] |
|---|
| 2421 | [fix ASSERT_SPARK_POOL_INVARIANTS(): top>bottom is valid |
|---|
| 2422 | Simon Marlow <marlowsd@gmail.com>**20081106155826] |
|---|
| 2423 | [pruneSparkQueue(): fix bug when top>bottom |
|---|
| 2424 | Simon Marlow <marlowsd@gmail.com>**20081106155648] |
|---|
| 2425 | [don't yield if the system is shutting down |
|---|
| 2426 | Simon Marlow <marlowsd@gmail.com>**20081106155356] |
|---|
| 2427 | [leave out ATTRIBUTE_ALIGNED on Windows, it gives a warning |
|---|
| 2428 | Simon Marlow <marlowsd@gmail.com>**20081106132105] |
|---|
| 2429 | [Cope with ThreadRelocated when traversing the blocked_queue |
|---|
| 2430 | Simon Marlow <marlowsd@gmail.com>**20081106114045 |
|---|
| 2431 | Fixes "invalid what_next field" in ioref001 on Windows, and perhaps others |
|---|
| 2432 | ] |
|---|
| 2433 | [Remove dead code. |
|---|
| 2434 | Thomas Schilling <nominolo@googlemail.com>**20081031162036] |
|---|
| 2435 | [Run sparks in batches, instead of creating a new thread for each one |
|---|
| 2436 | Simon Marlow <marlowsd@gmail.com>**20081106113639 |
|---|
| 2437 | Signficantly reduces the overhead for par, which means that we can |
|---|
| 2438 | make use of paralellism at a much finer granularity. |
|---|
| 2439 | ] |
|---|
| 2440 | [allocateInGen(): increase alloc_blocks (#2747) |
|---|
| 2441 | Simon Marlow <marlowsd@gmail.com>**20081106113714] |
|---|
| 2442 | [disable MonadPlus instance that doesn't compile with 6.6 |
|---|
| 2443 | Simon Marlow <marlowsd@gmail.com>**20081106100411] |
|---|
| 2444 | [don't yield the Capability if blackholes_need_checking |
|---|
| 2445 | Simon Marlow <marlowsd@gmail.com>**20081105154928] |
|---|
| 2446 | [deadlock fix: reset the flag *after* checking the blackhole queue |
|---|
| 2447 | Simon Marlow <marlowsd@gmail.com>**20081105150542] |
|---|
| 2448 | [retreat the top/bottom fields of the spark pool in pruneSparkPool() |
|---|
| 2449 | Simon Marlow <marlowsd@gmail.com>**20081105150359] |
|---|
| 2450 | [fix the :help docs for :set stop (#2737) |
|---|
| 2451 | Simon Marlow <marlowsd@gmail.com>**20081104092929] |
|---|
| 2452 | [bugfix: don't ingore the return value from rts_evalIO() |
|---|
| 2453 | Simon Marlow <marlowsd@gmail.com>**20081104142147] |
|---|
| 2454 | [Document the new SPARKS statistic, and xref from the parallelism section |
|---|
| 2455 | Simon Marlow <marlowsd@gmail.com>**20081024120236] |
|---|
| 2456 | [Move the freeing of Capabilities later in the shutdown sequence |
|---|
| 2457 | Simon Marlow <marlowsd@gmail.com>**20081024104301 |
|---|
| 2458 | Fixes a bug whereby the Capability has been freed but other |
|---|
| 2459 | Capabilities are still trying to steal sparks from its pool. |
|---|
| 2460 | ] |
|---|
| 2461 | [Pad Capabilities and Tasks to 64 bytes |
|---|
| 2462 | Simon Marlow <marlowsd@gmail.com>**20081023080749 |
|---|
| 2463 | This is just good practice to avoid placing two structures heavily |
|---|
| 2464 | accessed by different CPUs on the same cache line |
|---|
| 2465 | ] |
|---|
| 2466 | [Fix desugaring of record update (fixes Trac #2735) |
|---|
| 2467 | simonpj@microsoft.com**20081103110819] |
|---|
| 2468 | [Refuse to register packages with unversioned dependencies; trac #1837 |
|---|
| 2469 | Ian Lynagh <igloo@earth.li>**20081031181746] |
|---|
| 2470 | [We now require GHC 6.6 to build the HEAD (and thus 6.12) |
|---|
| 2471 | Ian Lynagh <igloo@earth.li>**20081031171506] |
|---|
| 2472 | [:set prompt now understand Haskell String syntax; trace #2652 |
|---|
| 2473 | Ian Lynagh <igloo@earth.li>**20081031145227] |
|---|
| 2474 | [Comments only |
|---|
| 2475 | simonpj@microsoft.com**20081031140236] |
|---|
| 2476 | [Quickfix for warning. |
|---|
| 2477 | Thomas Schilling <nominolo@googlemail.com>**20081031113125] |
|---|
| 2478 | [Export typeclasses for accessing compiler results. |
|---|
| 2479 | Thomas Schilling <nominolo@googlemail.com>**20081028182310 |
|---|
| 2480 | |
|---|
| 2481 | MERGE TO 6.10. |
|---|
| 2482 | ] |
|---|
| 2483 | [Minor refactoring. |
|---|
| 2484 | Thomas Schilling <nominolo@googlemail.com>**20081028182202] |
|---|
| 2485 | [Include record fields in tags. |
|---|
| 2486 | Thomas Schilling <nominolo@googlemail.com>**20081028180538] |
|---|
| 2487 | [Fix imports |
|---|
| 2488 | simonpj@microsoft.com**20081031092306] |
|---|
| 2489 | [Improve error reporting for non-rigid GADT matches |
|---|
| 2490 | simonpj@microsoft.com**20081030143947 |
|---|
| 2491 | |
|---|
| 2492 | Following suggestions from users, this patch improves the error message |
|---|
| 2493 | when a GADT match needs a rigid type: |
|---|
| 2494 | |
|---|
| 2495 | tcfail172.hs:19:10: |
|---|
| 2496 | GADT pattern match in non-rigid context for `Nil' |
|---|
| 2497 | - Solution: add a type signature |
|---|
| 2498 | + Probable solution: add a type signature for `is_normal' |
|---|
| 2499 | In the pattern: Nil |
|---|
| 2500 | In the definition of `is_normal': is_normal Nil = True |
|---|
| 2501 | |
|---|
| 2502 | Now GHC tries to tell you what to give a type signature *for*. |
|---|
| 2503 | Thanks to Daniel Gorin and others for the suggestions. |
|---|
| 2504 | |
|---|
| 2505 | ] |
|---|
| 2506 | [Add (a) CoreM monad, (b) new Annotations feature |
|---|
| 2507 | simonpj@microsoft.com**20081030125108 |
|---|
| 2508 | |
|---|
| 2509 | This patch, written by Max Bolingbroke, does two things |
|---|
| 2510 | |
|---|
| 2511 | 1. It adds a new CoreM monad (defined in simplCore/CoreMonad), |
|---|
| 2512 | which is used as the top-level monad for all the Core-to-Core |
|---|
| 2513 | transformations (starting at SimplCore). It supports |
|---|
| 2514 | * I/O (for debug printing) |
|---|
| 2515 | * Unique supply |
|---|
| 2516 | * Statistics gathering |
|---|
| 2517 | * Access to the HscEnv, RuleBase, Annotations, Module |
|---|
| 2518 | The patch therefore refactors the top "skin" of every Core-to-Core |
|---|
| 2519 | pass, but does not change their functionality. |
|---|
| 2520 | |
|---|
| 2521 | 2. It adds a completely new facility to GHC: Core "annotations". |
|---|
| 2522 | The idea is that you can say |
|---|
| 2523 | {#- ANN foo (Just "Hello") #-} |
|---|
| 2524 | which adds the annotation (Just "Hello") to the top level function |
|---|
| 2525 | foo. These annotations can be looked up in any Core-to-Core pass, |
|---|
| 2526 | and are persisted into interface files. (Hence a Core-to-Core pass |
|---|
| 2527 | can also query the annotations of imported things.) Furthermore, |
|---|
| 2528 | a Core-to-Core pass can add new annotations (eg strictness info) |
|---|
| 2529 | of its own, which can be queried by importing modules. |
|---|
| 2530 | |
|---|
| 2531 | The design of the annotation system is somewhat in flux. It's |
|---|
| 2532 | designed to work with the (upcoming) dynamic plug-ins mechanism, |
|---|
| 2533 | but is meanwhile independently useful. |
|---|
| 2534 | |
|---|
| 2535 | Do not merge to 6.10! |
|---|
| 2536 | |
|---|
| 2537 | ] |
|---|
| 2538 | [Fix Trac #2674: in TH reject empty case expressions and function definitions |
|---|
| 2539 | simonpj@microsoft.com**20081030094528] |
|---|
| 2540 | [Change naming conventions for compiler-generated dictionaries and type functions |
|---|
| 2541 | simonpj@microsoft.com**20081029140858 |
|---|
| 2542 | |
|---|
| 2543 | Up to now, the data constructor dictionary for class C as been called |
|---|
| 2544 | ":DC". But there is no reason for the colon to be at the front; indeed |
|---|
| 2545 | it confuses the (simple-minded) pretty-printer for types. So this |
|---|
| 2546 | patch changes it to be "D:C". This makes Core a lot easier to read. |
|---|
| 2547 | Having a colon in the middle ensures that it can't clash with a user-written |
|---|
| 2548 | data type. |
|---|
| 2549 | |
|---|
| 2550 | Similarly I changed |
|---|
| 2551 | |
|---|
| 2552 | T:C Data type corresponding a class dictionary (was :TC) |
|---|
| 2553 | D:C Data constructor for class dictionary (was :DC) |
|---|
| 2554 | |
|---|
| 2555 | NTCo:T Coercion mapping from a newtype T to its representation type |
|---|
| 2556 | (was :CoT) |
|---|
| 2557 | |
|---|
| 2558 | TFCo:R Coercion mapping from a data family to its respresentation type R |
|---|
| 2559 | (was :CoFR) |
|---|
| 2560 | |
|---|
| 2561 | Rn:T The n'th respresentation data type for a data type T |
|---|
| 2562 | (was :RnT) |
|---|
| 2563 | |
|---|
| 2564 | |
|---|
| 2565 | Do not merge to 6.10. |
|---|
| 2566 | |
|---|
| 2567 | HEADS-UP: you'll need to recompile libraries from scratch. |
|---|
| 2568 | |
|---|
| 2569 | ROMAN: you could do the same for OccName.mkVectTyConOcc etc, if you wanted. |
|---|
| 2570 | |
|---|
| 2571 | |
|---|
| 2572 | ] |
|---|
| 2573 | [Fix tcrun031: yet more tidying up in TcDeriv |
|---|
| 2574 | simonpj@microsoft.com**20081029130155] |
|---|
| 2575 | [Add Outputable instance for CoercionI |
|---|
| 2576 | simonpj@microsoft.com**20081029130114] |
|---|
| 2577 | [Fix Trac #2720: inlining and casts |
|---|
| 2578 | simonpj@microsoft.com**20081028140828 |
|---|
| 2579 | |
|---|
| 2580 | The issue here is what happens when we have |
|---|
| 2581 | |
|---|
| 2582 | (f |> co) x |
|---|
| 2583 | |
|---|
| 2584 | where f is itself marked INLINE. We want callSiteInline to "see" |
|---|
| 2585 | the fact that the function is applied, and hence have some incentive |
|---|
| 2586 | to inline. I've done this by extending CoreUnfold.CallCtxt with |
|---|
| 2587 | ValAppCtxt. I think that should catch this case without messing up |
|---|
| 2588 | any of the others. |
|---|
| 2589 | |
|---|
| 2590 | ] |
|---|
| 2591 | [Clarify documentatoin |
|---|
| 2592 | simonpj@microsoft.com**20081028133009] |
|---|
| 2593 | [Update library version numbers in the release notes |
|---|
| 2594 | Ian Lynagh <igloo@earth.li>**20081023144018] |
|---|
| 2595 | [various updates to the release notes |
|---|
| 2596 | Simon Marlow <marlowsd@gmail.com>**20081007151647] |
|---|
| 2597 | [Add library release notes |
|---|
| 2598 | Ian Lynagh <igloo@earth.li>**20080920155722] |
|---|
| 2599 | [Add release notes for the compiler |
|---|
| 2600 | Ian Lynagh <igloo@earth.li>**20080920114857] |
|---|
| 2601 | [Doc fix |
|---|
| 2602 | Ian Lynagh <igloo@earth.li>**20081028150534] |
|---|
| 2603 | [Rename some variables in docs |
|---|
| 2604 | Ian Lynagh <igloo@earth.li>**20081028150447] |
|---|
| 2605 | [Fix typos |
|---|
| 2606 | Ian Lynagh <igloo@earth.li>**20081028144655] |
|---|
| 2607 | [Mostly-fix Trac #2595: updates for existentials |
|---|
| 2608 | simonpj@microsoft.com**20081028115427 |
|---|
| 2609 | |
|---|
| 2610 | Ganesh wanted to update records that involve existentials. That |
|---|
| 2611 | seems reasonable to me, and this patch covers existentials, GADTs, |
|---|
| 2612 | and data type families. |
|---|
| 2613 | |
|---|
| 2614 | The restriction is that |
|---|
| 2615 | The types of the updated fields may mention only the |
|---|
| 2616 | universally-quantified type variables of the data constructor |
|---|
| 2617 | |
|---|
| 2618 | This doesn't allow everything in #2595 (it allows 'g' but not 'f' in |
|---|
| 2619 | the ticket), but it gets a lot closer. |
|---|
| 2620 | |
|---|
| 2621 | Lots of the new lines are comments! |
|---|
| 2622 | |
|---|
| 2623 | ] |
|---|
| 2624 | [Fix Trac #2723: keep track of record field names in the renamer |
|---|
| 2625 | simonpj@microsoft.com**20081028110445 |
|---|
| 2626 | |
|---|
| 2627 | The idea here is that with -XNamedFieldPuns and -XRecordWildCards we don't |
|---|
| 2628 | want to report shadowing errors for |
|---|
| 2629 | let fld = <blah> in C { .. } |
|---|
| 2630 | But to suppress such shadowing errors, the renamer needs to know that |
|---|
| 2631 | 'fld' *is* a record selector. Hence the new NameSet in |
|---|
| 2632 | TcRnFypes.RecFieldEnv |
|---|
| 2633 | |
|---|
| 2634 | ] |
|---|
| 2635 | [Remove dead code |
|---|
| 2636 | simonpj@microsoft.com**20081028074639] |
|---|
| 2637 | [Fix Trac #2713: refactor and tidy up renaming of fixity decls |
|---|
| 2638 | simonpj@microsoft.com**20081027222738 |
|---|
| 2639 | |
|---|
| 2640 | In fixing #2713, this patch also eliminates two almost-unused |
|---|
| 2641 | functions from RnEnv (lookupBndr and lookupBndr_maybe). The |
|---|
| 2642 | net lines of code is prety much unchanged, but more of them |
|---|
| 2643 | are comments! |
|---|
| 2644 | |
|---|
| 2645 | ] |
|---|
| 2646 | [Fix Trac #2701: make deriving check better for unlifted args |
|---|
| 2647 | simonpj@microsoft.com**20081025171211 |
|---|
| 2648 | |
|---|
| 2649 | Getting the automatic deriving mechanism to work really smoothly |
|---|
| 2650 | is surprisingly hard. I keep finding myself in TcDeriv! |
|---|
| 2651 | |
|---|
| 2652 | Anyway, this is a nice clean fix to Trac #2701. |
|---|
| 2653 | |
|---|
| 2654 | ] |
|---|
| 2655 | [Use pdflatex rather than latex for building |
|---|
| 2656 | Ian Lynagh <igloo@earth.li>**20081024112400 |
|---|
| 2657 | The Windows builder is having problems running ps2pdf, so this works |
|---|
| 2658 | aroudn the problem. |
|---|
| 2659 | ] |
|---|
| 2660 | [Remove an unmatched } in core.tex |
|---|
| 2661 | Ian Lynagh <igloo@earth.li>**20081024111750] |
|---|
| 2662 | [Add a usepackage{url} |
|---|
| 2663 | Ian Lynagh <igloo@earth.li>**20081024111458] |
|---|
| 2664 | [Update ANNOUNCE |
|---|
| 2665 | Ian Lynagh <igloo@earth.li>**20081022164423] |
|---|
| 2666 | [Fix a bug in the new scheduler |
|---|
| 2667 | Simon Marlow <marlowsd@gmail.com>**20081023155017 |
|---|
| 2668 | If the current thread blocks, we should yield the Capability |
|---|
| 2669 | immediately, because the thread and hence possibly the current Task |
|---|
| 2670 | are now owned by someone else. This worked in the old scheduler, but |
|---|
| 2671 | we moved where the yield happens in the new scheduler which broke it. |
|---|
| 2672 | ] |
|---|
| 2673 | [add an assertion |
|---|
| 2674 | Simon Marlow <marlowsd@gmail.com>**20081023154551] |
|---|
| 2675 | [fix a warning |
|---|
| 2676 | Simon Marlow <marlowsd@gmail.com>**20081023082213] |
|---|
| 2677 | [traverse the spark pools only once during GC rather than twice |
|---|
| 2678 | Simon Marlow <marlowsd@gmail.com>**20081022115233] |
|---|
| 2679 | [Refactoring and reorganisation of the scheduler |
|---|
| 2680 | Simon Marlow <marlowsd@gmail.com>**20081022092744 |
|---|
| 2681 | |
|---|
| 2682 | Change the way we look for work in the scheduler. Previously, |
|---|
| 2683 | checking to see whether there was anything to do was a |
|---|
| 2684 | non-side-effecting operation, but this has changed now that we do |
|---|
| 2685 | work-stealing. This lead to a refactoring of the inner loop of the |
|---|
| 2686 | scheduler. |
|---|
| 2687 | |
|---|
| 2688 | Also, lots of cleanup in the new work-stealing code, but no functional |
|---|
| 2689 | changes. |
|---|
| 2690 | |
|---|
| 2691 | One new statistic is added to the +RTS -s output: |
|---|
| 2692 | |
|---|
| 2693 | SPARKS: 1430 (2 converted, 1427 pruned) |
|---|
| 2694 | |
|---|
| 2695 | lets you know something about the use of `par` in the program. |
|---|
| 2696 | ] |
|---|
| 2697 | [Work stealing for sparks |
|---|
| 2698 | berthold@mathematik.uni-marburg.de**20080915132846 |
|---|
| 2699 | |
|---|
| 2700 | Spark stealing support for PARALLEL_HASKELL and THREADED_RTS versions of the RTS. |
|---|
| 2701 | |
|---|
| 2702 | Spark pools are per capability, separately allocated and held in the Capability |
|---|
| 2703 | structure. The implementation uses Double-Ended Queues (deque) and cas-protected |
|---|
| 2704 | access. |
|---|
| 2705 | |
|---|
| 2706 | The write end of the queue (position bottom) can only be used with |
|---|
| 2707 | mutual exclusion, i.e. by exactly one caller at a time. |
|---|
| 2708 | Multiple readers can steal()/findSpark() from the read end |
|---|
| 2709 | (position top), and are synchronised without a lock, based on a cas |
|---|
| 2710 | of the top position. One reader wins, the others return NULL for a |
|---|
| 2711 | failure. |
|---|
| 2712 | |
|---|
| 2713 | Work stealing is called when Capabilities find no other work (inside yieldCapability), |
|---|
| 2714 | and tries all capabilities 0..n-1 twice, unless a theft succeeds. |
|---|
| 2715 | |
|---|
| 2716 | Inside schedulePushWork, all considered cap.s (those which were idle and could |
|---|
| 2717 | be grabbed) are woken up. Future versions should wake up capabilities immediately when |
|---|
| 2718 | putting a new spark in the local pool, from newSpark(). |
|---|
| 2719 | |
|---|
| 2720 | Patch has been re-recorded due to conflicting bugfixes in the sparks.c, also fixing a |
|---|
| 2721 | (strange) conflict in the scheduler. |
|---|
| 2722 | |
|---|
| 2723 | ] |
|---|
| 2724 | [include an elapsed time table |
|---|
| 2725 | Simon Marlow <marlowsd@gmail.com>**20081023080648] |
|---|
| 2726 | [generate a valid summary for older GHC versions too |
|---|
| 2727 | Simon Marlow <marlowsd@gmail.com>**20081023080629] |
|---|
| 2728 | [Fix Trac #2714 (a minor wibble) |
|---|
| 2729 | simonpj@microsoft.com**20081022145138 |
|---|
| 2730 | |
|---|
| 2731 | In boxy_match (which is a pure function used by preSubType) we can |
|---|
| 2732 | encounter TyVars not just TcTyVars; this patch takes account of that. |
|---|
| 2733 | |
|---|
| 2734 | ] |
|---|
| 2735 | [Reject programs with superclass equalities for now |
|---|
| 2736 | Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20081021131721 |
|---|
| 2737 | - The current implementation of type families cannot properly deal |
|---|
| 2738 | with superclass equalities. Instead of making a half-hearted attempt at |
|---|
| 2739 | supporting them, which mostly ends in cryptic error message, rejecting |
|---|
| 2740 | right away with an appropriate message. |
|---|
| 2741 | |
|---|
| 2742 | MERGE TO 6.10 |
|---|
| 2743 | ] |
|---|
| 2744 | [Fix doc syntax |
|---|
| 2745 | Ian Lynagh <igloo@earth.li>**20081021183317] |
|---|
| 2746 | [Don't put the README file in the Windows installer; fixes trac #2698 |
|---|
| 2747 | Ian Lynagh <igloo@earth.li>**20081021162543 |
|---|
| 2748 | The README file talks about getting and building the sources, which |
|---|
| 2749 | doesn't make sense for the installer. |
|---|
| 2750 | ] |
|---|
| 2751 | [Comments and parens only |
|---|
| 2752 | simonpj@microsoft.com**20081021151401] |
|---|
| 2753 | [Do proper cloning in worker/wrapper splitting |
|---|
| 2754 | simonpj@microsoft.com**20081021143156 |
|---|
| 2755 | |
|---|
| 2756 | See Note [Freshen type variables] in WwLib. We need to clone type |
|---|
| 2757 | variables when building a worker/wrapper split, else we simply get |
|---|
| 2758 | bogus code, admittedly in rather obscure situations. I can't quite |
|---|
| 2759 | remember what program showed this up, unfortunately, but there |
|---|
| 2760 | definitely *was* one! (You get a Lint error.) |
|---|
| 2761 | |
|---|
| 2762 | ] |
|---|
| 2763 | [Don't float an expression wrapped in a cast |
|---|
| 2764 | simonpj@microsoft.com**20081021143019 |
|---|
| 2765 | |
|---|
| 2766 | There is no point in floating out an expression wrapped in a coercion; |
|---|
| 2767 | If we do we'll transform |
|---|
| 2768 | lvl = e |> co [_$_] |
|---|
| 2769 | to |
|---|
| 2770 | lvl' = e; lvl = lvl' |> co |
|---|
| 2771 | and then inline lvl. Better just to float out the payload (e). |
|---|
| 2772 | |
|---|
| 2773 | ] |
|---|
| 2774 | [Fix Trac #2668, and refactor TcDeriv |
|---|
| 2775 | simonpj@microsoft.com**20081021142922 |
|---|
| 2776 | |
|---|
| 2777 | TcDeriv deals with both standalone and ordinary 'deriving'; |
|---|
| 2778 | and with both data types and 'newtype deriving'. The result |
|---|
| 2779 | is really rather compilcated and ad hoc. Ryan discovered |
|---|
| 2780 | #2668; this patch fixes that bug, and makes the internal interfces |
|---|
| 2781 | #more uniform. Specifically, the business of knocking off |
|---|
| 2782 | type arguments from the instance type until it matches the kind of the |
|---|
| 2783 | class, is now done by derivTyData, not mkNewTypeEqn, because the |
|---|
| 2784 | latter is shared with standalone derriving, whree the trimmed |
|---|
| 2785 | type application is what the user wrote. |
|---|
| 2786 | |
|---|
| 2787 | ] |
|---|
| 2788 | [Spelling error in comment |
|---|
| 2789 | simonpj@microsoft.com**20081019233511] |
|---|
| 2790 | [White space only |
|---|
| 2791 | simonpj@microsoft.com**20081019233352] |
|---|
| 2792 | [Comments to explain strict overlap checking for type family instances |
|---|
| 2793 | simonpj@microsoft.com**20081019184208] |
|---|
| 2794 | [Allow type families to use GADT syntax (and be GADTs) |
|---|
| 2795 | simonpj@microsoft.com**20080923140535 |
|---|
| 2796 | |
|---|
| 2797 | We've always intended to allow you to use GADT syntax for |
|---|
| 2798 | data families: |
|---|
| 2799 | data instance T [a] where |
|---|
| 2800 | T1 :: a -> T [a] |
|---|
| 2801 | and indeed to allow data instances to *be* GADTs |
|---|
| 2802 | data intsance T [a] where |
|---|
| 2803 | T1 :: Int -> T [Int] |
|---|
| 2804 | T2 :: a -> b -> T [(a,b)] |
|---|
| 2805 | |
|---|
| 2806 | This patch fixes the renamer and type checker to allow this. |
|---|
| 2807 | |
|---|
| 2808 | ] |
|---|
| 2809 | [Improve crash message from applyTys and applyTypeToArgs |
|---|
| 2810 | simonpj@microsoft.com**20080923135419] |
|---|
| 2811 | [Wibble to ungrammatical error message |
|---|
| 2812 | simonpj@microsoft.com**20080920232256] |
|---|
| 2813 | [Comments only: replace ":=:" by "~" (notation for equality predicates) |
|---|
| 2814 | simonpj@microsoft.com**20080920232024] |
|---|
| 2815 | [FIX #2693 |
|---|
| 2816 | Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20081021120107 |
|---|
| 2817 | - As long as the first reduceContext in tcSimplifyRestricted potentially |
|---|
| 2818 | performs improvement, we need to zonk again before the second reduceContext. |
|---|
| 2819 | It would be better to prevent the improvement in the first place, but given |
|---|
| 2820 | the current situation zonking is definitely the right thing to do. |
|---|
| 2821 | |
|---|
| 2822 | MERGE TO 6.10 |
|---|
| 2823 | ] |
|---|
| 2824 | [Restore the terminal attributes even if ghci does not exit normally. |
|---|
| 2825 | Judah Jacobson <judah.jacobson@gmail.com>**20081020164109] |
|---|
| 2826 | [FIX #2688 |
|---|
| 2827 | Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20081021044213 |
|---|
| 2828 | - Change in TcSimplify.reduceContext: |
|---|
| 2829 | |
|---|
| 2830 | We do *not* go around for new extra_eqs. Morally, we should, |
|---|
| 2831 | but we can't without risking non-termination (see #2688). By |
|---|
| 2832 | not going around, we miss some legal programs mixing FDs and |
|---|
| 2833 | TFs, but we never claimed to support such programs in the |
|---|
| 2834 | current implementation anyway. |
|---|
| 2835 | |
|---|
| 2836 | MERGE TO 6.10 |
|---|
| 2837 | ] |
|---|
| 2838 | [Move documentation within 80 column boundary. |
|---|
| 2839 | Thomas Schilling <nominolo@googlemail.com>**20081014134016] |
|---|
| 2840 | [Improve haddock documentation for 'GHC.topSortModuleGraph'. |
|---|
| 2841 | Thomas Schilling <nominolo@googlemail.com>**20081014133833] |
|---|
| 2842 | [Improve haddock documentation for HsExpr module. |
|---|
| 2843 | Thomas Schilling <nominolo@googlemail.com>**20081014133740] |
|---|
| 2844 | [Improve Haddock-markup for HsDecls module. |
|---|
| 2845 | Thomas Schilling <nominolo@googlemail.com>**20081014133556] |
|---|
| 2846 | [Run Haddock with compacting GC and show RTS statistics. |
|---|
| 2847 | Thomas Schilling <nominolo@googlemail.com>**20081020111410] |
|---|
| 2848 | [FIX (partially) #2703: bug in stack overflow handling when inside block |
|---|
| 2849 | Simon Marlow <marlowsd@gmail.com>**20081020121103 |
|---|
| 2850 | As a result of a previous ticket (#767) we disabled the generation of |
|---|
| 2851 | StackOverflow exceptions when inside a Control.Exception.block, on the |
|---|
| 2852 | grounds that StackOverflow is like an asynchronous exception. Instead |
|---|
| 2853 | we just increase the stack size. However, the stack size calculation |
|---|
| 2854 | was wrong, and ended up not increasing the size of the stack, with the |
|---|
| 2855 | result that the runtime just kept re-allocating the stack and filling |
|---|
| 2856 | up memory. |
|---|
| 2857 | ] |
|---|
| 2858 | [Re-export Located(..) and related functions |
|---|
| 2859 | Simon Marlow <marlowsd@gmail.com>**20081020102422 |
|---|
| 2860 | So that clients don't need to import SrcLoc |
|---|
| 2861 | ] |
|---|
| 2862 | [whitespace fix |
|---|
| 2863 | Simon Marlow <marlowsd@gmail.com>**20081020101241] |
|---|
| 2864 | [FIX #2691: Manually reset the terminal to its initial settings; works around a bug in libedit. |
|---|
| 2865 | Judah Jacobson <judah.jacobson@gmail.com>**20081016024838] |
|---|
| 2866 | [Eliminate duplicate flags in the tab completion of ghci's :set command. |
|---|
| 2867 | Judah Jacobson <judah.jacobson@gmail.com>**20081016015721] |
|---|
| 2868 | [Add dph haddock docs to the doc index |
|---|
| 2869 | Ian Lynagh <igloo@earth.li>**20081019133208] |
|---|
| 2870 | [Clean the bootstrapping extensible-exceptions package |
|---|
| 2871 | Ian Lynagh <igloo@earth.li>**20081017195942] |
|---|
| 2872 | [Fix trac #2687 |
|---|
| 2873 | Ian Lynagh <igloo@earth.li>**20081015163412 |
|---|
| 2874 | OtherPunctuation, ConnectorPunctuation and DashPunctuation are now |
|---|
| 2875 | treated as symbols, rather than merely graphic characters. |
|---|
| 2876 | ] |
|---|
| 2877 | [Fix trac #2680; avoid quadratic behaviour from (++) |
|---|
| 2878 | Ian Lynagh <igloo@earth.li>**20081015163235] |
|---|
| 2879 | [Fix the build when the bootstrapping compiler has a newer Cabal than us |
|---|
| 2880 | Ian Lynagh <igloo@earth.li>**20081015144023 |
|---|
| 2881 | We need to forcibly use the in-tree Cabal, or we get version mismatch errors |
|---|
| 2882 | ] |
|---|
| 2883 | [Fix the name of prologue.txt when making bindists |
|---|
| 2884 | Ian Lynagh <igloo@earth.li>**20081014114714] |
|---|
| 2885 | [Comments only |
|---|
| 2886 | simonpj@microsoft.com**20081015084501] |
|---|
| 2887 | [Fix Trac #2497; two separate typos in Lexer.x |
|---|
| 2888 | simonpj@microsoft.com**20081015084344 |
|---|
| 2889 | |
|---|
| 2890 | The patch to switch on lexing of 'forall' inside a RULES pragma |
|---|
| 2891 | wasn't working. This fixes it so that it does. |
|---|
| 2892 | |
|---|
| 2893 | ] |
|---|
| 2894 | [Update manual: tidy up instances, say more about type families in instance decls |
|---|
| 2895 | simonpj@microsoft.com**20081015080509] |
|---|
| 2896 | [Make tags work on Unices, too. |
|---|
| 2897 | Thomas Schilling <nominolo@googlemail.com>**20081014211236] |
|---|
| 2898 | [Undefine __PIC__ before defining it to work around "multiple definitions of __PIC__" warnings |
|---|
| 2899 | Clemens Fruhwirth <clemens@endorphin.org>**20081014143206] |
|---|
| 2900 | [Add "dyn" to GhcRTSWays when compiling --enable-shared |
|---|
| 2901 | Clemens Fruhwirth <clemens@endorphin.org>**20081014125123] |
|---|
| 2902 | [Fill out the ghc package's cabal file |
|---|
| 2903 | Ian Lynagh <igloo@earth.li>**20081013235817] |
|---|
| 2904 | [Patching libffi so it can be built as DLL |
|---|
| 2905 | Clemens Fruhwirth <clemens@endorphin.org>**20081014103459 |
|---|
| 2906 | |
|---|
| 2907 | libffi-dllize-3.0.6.patch should be pushed upstream |
|---|
| 2908 | ] |
|---|
| 2909 | [Add 'etags' makefile target. |
|---|
| 2910 | Thomas Schilling <nominolo@googlemail.com>**20081013170927 |
|---|
| 2911 | |
|---|
| 2912 | This only works with stage2 since `ghctags' is built against stage1 |
|---|
| 2913 | but not against the bootstrapping compiler. Also note that all of GHC |
|---|
| 2914 | must typecheck for this target to succeed. Perhaps we should not |
|---|
| 2915 | overwrite the old TAGS file by default then. |
|---|
| 2916 | ] |
|---|
| 2917 | [Use cabal information to get GHC's flags to `ghctags'. |
|---|
| 2918 | Thomas Schilling <nominolo@googlemail.com>**20081013170658 |
|---|
| 2919 | |
|---|
| 2920 | By giving the dist-directory to ghctags we can get all the GHC API |
|---|
| 2921 | flags we need in order to load the required modules. The flag name |
|---|
| 2922 | could perhaps be improved, but apart from that it seems to work well. |
|---|
| 2923 | ] |
|---|
| 2924 | [Version bump for libffi to 3.0.6 |
|---|
| 2925 | Clemens Fruhwirth <clemens@endorphin.org>**20081014081300] |
|---|
| 2926 | [Encode shared/static configuration into stamps to do the right thing when rebuilding |
|---|
| 2927 | Clemens Fruhwirth <clemens@endorphin.org>**20081013221530] |
|---|
| 2928 | [Add a link to the GHC API docs from the library haddock index |
|---|
| 2929 | Ian Lynagh <igloo@earth.li>**20081013195943] |
|---|
| 2930 | [Link to the GHC API documentation from the main doc page |
|---|
| 2931 | Ian Lynagh <igloo@earth.li>**20081013200927] |
|---|
| 2932 | [Whitespace only in docs/index.html |
|---|
| 2933 | Ian Lynagh <igloo@earth.li>**20081013200625] |
|---|
| 2934 | [Tweak gen_contents_index |
|---|
| 2935 | Ian Lynagh <igloo@earth.li>**20081013192548 |
|---|
| 2936 | It now works again after it has been installed, as well as while it is |
|---|
| 2937 | in a source tree. |
|---|
| 2938 | After it's been installed it filters out the ghc package, as that |
|---|
| 2939 | currently swamps everything else in the index. |
|---|
| 2940 | ] |
|---|
| 2941 | [Build fixes for DLLized rts |
|---|
| 2942 | Clemens Fruhwirth <clemens@endorphin.org>**20081013201608] |
|---|
| 2943 | [Do not filter the rts from linked libraries in linkDynLib as Windows does not allow unresolved symbols |
|---|
| 2944 | Clemens Fruhwirth <clemens@endorphin.org>**20081013201426] |
|---|
| 2945 | [Add HsFFI.o to INSTALL_LIBS |
|---|
| 2946 | Clemens Fruhwirth <clemens@endorphin.org>**20081013200945] |
|---|
| 2947 | [Rename symbol macros to a consistant naming scheme |
|---|
| 2948 | Clemens Fruhwirth <clemens@endorphin.org>**20081013162433] |
|---|
| 2949 | [Fix #2685: two Bool arguments to tidyTypeEnv were the wrong way around |
|---|
| 2950 | Simon Marlow <marlowsd@gmail.com>**20081013121339 |
|---|
| 2951 | So -XTemplateHaskell was behaving like -fomit-interface-file-pragmas, |
|---|
| 2952 | and vice versa. |
|---|
| 2953 | ] |
|---|
| 2954 | [Simplify the "is $bindir in $PATH" test |
|---|
| 2955 | Ian Lynagh <igloo@earth.li>**20081011191008] |
|---|
| 2956 | [Correct the "is $bindir in $PATH" test |
|---|
| 2957 | Ian Lynagh <igloo@earth.li>**20081011191030 |
|---|
| 2958 | We were testing neq instead of eq |
|---|
| 2959 | ] |
|---|
| 2960 | [Fix a typo which was causing ghci to quit on commands errors |
|---|
| 2961 | pepe <mnislaih@gmail.com>**20081011114720] |
|---|
| 2962 | [Drop libm from the linker dependencies for libffi |
|---|
| 2963 | Clemens Fruhwirth <clemens@endorphin.org>**20081011074524] |
|---|
| 2964 | [Do not generate haddock documentation when running install-docs in libffi |
|---|
| 2965 | Clemens Fruhwirth <clemens@endorphin.org>**20081010192318] |
|---|
| 2966 | [When waking up thread blocked on TVars, wake oldest first (#2319) |
|---|
| 2967 | Josef Svenningsson <josef.svenningsson@gmail.com>**20081010150322 |
|---|
| 2968 | StgTVarWatchQueue contains the threads blocked on a TVar in order |
|---|
| 2969 | youngest first. The list has to be traversed backwards to unpark the threads |
|---|
| 2970 | oldest first. |
|---|
| 2971 | |
|---|
| 2972 | This improves the fairness when using STM in some situations. |
|---|
| 2973 | ] |
|---|
| 2974 | [add readTVarIO :: TVar a -> IO a |
|---|
| 2975 | Simon Marlow <marlowsd@gmail.com>**20081010131545] |
|---|
| 2976 | [fix #2636: throw missing module errors as SourceErrors, not ErrMsg |
|---|
| 2977 | Simon Marlow <marlowsd@gmail.com>**20081010131535] |
|---|
| 2978 | [atomicModifyIORef: use a local cas() instead of the global lock |
|---|
| 2979 | Simon Marlow <simonmar@microsoft.com>**20081008154702 |
|---|
| 2980 | This should improve scaling when using atomicModifyIORef |
|---|
| 2981 | ] |
|---|
| 2982 | [Delay building libffi until package.conf is created and fix bindist |
|---|
| 2983 | Clemens Fruhwirth <clemens@endorphin.org>**20081010073106] |
|---|
| 2984 | [Install a versioned ghc-pkg script; fixes trac #2662 |
|---|
| 2985 | Ian Lynagh <igloo@earth.li>**20081009164946] |
|---|
| 2986 | [Fix bindist creation: Only the main RTS was being put in the bindists |
|---|
| 2987 | Ian Lynagh <igloo@earth.li>**20081009163451] |
|---|
| 2988 | [pushAtom: add missing case for MachNullAddr (#2589) |
|---|
| 2989 | Simon Marlow <marlowsd@gmail.com>**20081009091118] |
|---|
| 2990 | [undo incorrect assertion, and fix comments |
|---|
| 2991 | Simon Marlow <marlowsd@gmail.com>**20081009085118] |
|---|
| 2992 | [remove old GRAN/PARALLEL_HASKELL code |
|---|
| 2993 | Simon Marlow <marlowsd@gmail.com>**20081009085051] |
|---|
| 2994 | [FIX #2639 |
|---|
| 2995 | Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20081009132328 |
|---|
| 2996 | |
|---|
| 2997 | MERGE TO 6.10 |
|---|
| 2998 | ] |
|---|
| 2999 | [Cover PredTy case in Type.tyFamInsts |
|---|
| 3000 | Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20081009061435 |
|---|
| 3001 | |
|---|
| 3002 | MERGE TO 6.10 |
|---|
| 3003 | ] |
|---|
| 3004 | [Drop ghcconfig.h/RtsConfig.h from libffi's package.conf.in |
|---|
| 3005 | Clemens Fruhwirth <clemens@endorphin.org>**20081009071342] |
|---|
| 3006 | [Don't use sed's -i flag as Solaris doesn't know it in libffi/Makefile |
|---|
| 3007 | Clemens Fruhwirth <clemens@endorphin.org>**20081008234455] |
|---|
| 3008 | [Don't use /dev/null trick to create empty object files in libffi/Makefile |
|---|
| 3009 | Clemens Fruhwirth <clemens@endorphin.org>**20081008232902] |
|---|
| 3010 | [Turn libffi into a Haskell package |
|---|
| 3011 | Clemens Fruhwirth <clemens@endorphin.org>**20081008170443] |
|---|
| 3012 | [Make 'getModSummary' deterministic. |
|---|
| 3013 | Thomas Schilling <nominolo@googlemail.com>**20081008144032] |
|---|
| 3014 | [Add accessors to 'HsModule' and haddockify it. |
|---|
| 3015 | Thomas Schilling <nominolo@googlemail.com>**20081007235656] |
|---|
| 3016 | [fix syntax errors in src-dist publish rules |
|---|
| 3017 | Simon Marlow <marlowsd@gmail.com>**20081008103432] |
|---|
| 3018 | [add comments and an ASSERT_LOCK_HELD() |
|---|
| 3019 | Simon Marlow <marlowsd@gmail.com>**20081008112627] |
|---|
| 3020 | [Fix #2663: we had a hard-wired capabilities[0] |
|---|
| 3021 | Simon Marlow <marlowsd@gmail.com>**20081008112609 |
|---|
| 3022 | For some unknown reason in schedulePostRunThread() we were always |
|---|
| 3023 | passing capabilities[0] rather than the current Capability to |
|---|
| 3024 | throwToSingleThreaded(). This caused all kinds of weird failures and |
|---|
| 3025 | crashes in STM code when running on multiple processors. |
|---|
| 3026 | ] |
|---|
| 3027 | [Fix #1955 for heap profiles generated by +RTS -hT |
|---|
| 3028 | Simon Marlow <marlowsd@gmail.com>**20081003150745] |
|---|
| 3029 | [add a section id for +RTS -hT |
|---|
| 3030 | Simon Marlow <marlowsd@gmail.com>**20081007151007] |
|---|
| 3031 | [update documentation for PostfixOperators |
|---|
| 3032 | Simon Marlow <marlowsd@gmail.com>**20081007150957] |
|---|
| 3033 | [fix markup |
|---|
| 3034 | Simon Marlow <marlowsd@gmail.com>**20081007150943] |
|---|
| 3035 | [Fix bug in DPH docs |
|---|
| 3036 | Roman Leshchinskiy <rl@cse.unsw.edu.au>**20081008101618] |
|---|
| 3037 | [Add short DPH section to users guide |
|---|
| 3038 | Roman Leshchinskiy <rl@cse.unsw.edu.au>**20081008064754 |
|---|
| 3039 | |
|---|
| 3040 | MERGE TO 6.10 |
|---|
| 3041 | ] |
|---|
| 3042 | [Users Guide: added type family documentation |
|---|
| 3043 | Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20081008061927 |
|---|
| 3044 | |
|---|
| 3045 | MERGE TO 6.10 |
|---|
| 3046 | ] |
|---|
| 3047 | [Track changes to package dph |
|---|
| 3048 | Roman Leshchinskiy <rl@cse.unsw.edu.au>**20081008032859 |
|---|
| 3049 | |
|---|
| 3050 | MERGE TO 6.10 |
|---|
| 3051 | ] |
|---|
| 3052 | [Build a profiled GHC API by default if p is in GhcLibWays |
|---|
| 3053 | Ian Lynagh <igloo@earth.li>**20081007152318] |
|---|
| 3054 | [Check whether mk/validate.mk defines anything after validating |
|---|
| 3055 | Ian Lynagh <igloo@earth.li>**20081007144855] |
|---|
| 3056 | [Remove #define _BSD_SOURCE from Stg.h |
|---|
| 3057 | Ian Lynagh <igloo@earth.li>**20081006101959 |
|---|
| 3058 | It's no longer needed, as base no longer #includes it |
|---|
| 3059 | ] |
|---|
| 3060 | [Make ghctags compile again. |
|---|
| 3061 | Thomas Schilling <nominolo@googlemail.com>**20081007135705] |
|---|
| 3062 | [Revert AutoLinkPackages change for dynamic libraries. Cabal handles that now. |
|---|
| 3063 | Clemens Fruhwirth <clemens@endorphin.org>**20081007100417] |
|---|
| 3064 | [Change suffix for dyn. linked executables from _real to .dyn |
|---|
| 3065 | Clemens Fruhwirth <clemens@endorphin.org>**20081007100750] |
|---|
| 3066 | [Add accessors to 'Target' fields and haddockify. |
|---|
| 3067 | Thomas Schilling <nominolo@googlemail.com>**20081006222940 |
|---|
| 3068 | |
|---|
| 3069 | MERGE TO 6.10 |
|---|
| 3070 | ] |
|---|
| 3071 | [Make 'gblock' and 'gunblock' part of 'ExceptionMonad'. This way the |
|---|
| 3072 | Thomas Schilling <nominolo@googlemail.com>**20081006222831 |
|---|
| 3073 | default implementations of 'gbracket' and 'gfinally' just work. |
|---|
| 3074 | |
|---|
| 3075 | MERGE TO 6.10 |
|---|
| 3076 | ] |
|---|
| 3077 | [Add Word8 support to vectoriser |
|---|
| 3078 | Roman Leshchinskiy <rl@cse.unsw.edu.au>**20081007004416 |
|---|
| 3079 | |
|---|
| 3080 | MERGE TO 6.10 |
|---|
| 3081 | ] |
|---|
| 3082 | [Fix generating OS X installers: Set COMMAND_MODE=unix2003 |
|---|
| 3083 | Ian Lynagh <igloo@earth.li>**20081005222715 |
|---|
| 3084 | If we don't specify COMMAND_MODE=unix2003 then xcodebuild defaults |
|---|
| 3085 | to setting it to legacy, which means that ar builds archives |
|---|
| 3086 | without a table of contents. That makes the build fail later on. |
|---|
| 3087 | ] |
|---|
| 3088 | [We need to set datadir = $(libdir) in bindists |
|---|
| 3089 | Ian Lynagh <igloo@earth.li>**20081005143307 |
|---|
| 3090 | We already do in the normal Makefiles. |
|---|
| 3091 | |
|---|
| 3092 | This is because GHC needs package.conf and unlit to be in the same place |
|---|
| 3093 | (and things like ghc-pkg need to agree on where package.conf is, so we |
|---|
| 3094 | just set it globally). |
|---|
| 3095 | ] |
|---|
| 3096 | [prep-bin-dist-mingw complains if it finds a bad version of windres |
|---|
| 3097 | Ian Lynagh <igloo@earth.li>**20081004175351] |
|---|
| 3098 | [removed Data.Generics.Basics, added Data.Data |
|---|
| 3099 | 'Jose Pedro Magalhaes <jpm@cs.uu.nl>'**20081002082808] |
|---|
| 3100 | [Fix a build problem with GHC 6.4.2 |
|---|
| 3101 | Ian Lynagh <igloo@earth.li>**20081003195700] |
|---|
| 3102 | [No AutoLinkPackages for dynamic library linking |
|---|
| 3103 | Clemens Fruhwirth <clemens@endorphin.org>**20081003185304] |
|---|
| 3104 | [use ghcError for error in command line |
|---|
| 3105 | Clemens Fruhwirth <clemens@endorphin.org>**20081001125648] |
|---|
| 3106 | [Fix warnings |
|---|
| 3107 | simonpj@microsoft.com**20081003171207] |
|---|
| 3108 | [Always use extensible exceptions in ghc-pkg, rather than using ifdefs |
|---|
| 3109 | Ian Lynagh <igloo@earth.li>**20081003161247] |
|---|
| 3110 | [Use a proper exception for IOEnvFailure, not just a UserError |
|---|
| 3111 | Ian Lynagh <igloo@earth.li>**20081003160129] |
|---|
| 3112 | [Use an extensible-exceptions package when bootstrapping |
|---|
| 3113 | Ian Lynagh <igloo@earth.li>**20081003140216 |
|---|
| 3114 | Ifdefs for whether we had extensible exceptions or not were spreading |
|---|
| 3115 | through GHC's source, and things would only have got worse for the next |
|---|
| 3116 | 2-3 years, so instead we now use an implementation of extensible |
|---|
| 3117 | exceptions built on top of the old exception type. |
|---|
| 3118 | ] |
|---|
| 3119 | [Expunge ThFake, cure Trac #2632 |
|---|
| 3120 | simonpj@microsoft.com**20081003140423 |
|---|
| 3121 | |
|---|
| 3122 | This patch fixes a dirty hack (the fake ThFake module), which in turn |
|---|
| 3123 | was causing Trac #2632. |
|---|
| 3124 | |
|---|
| 3125 | The new scheme is that the top-level binders in a TH [d| ... |] decl splice |
|---|
| 3126 | get Internal names. That breaks a previous invariant that things like |
|---|
| 3127 | TyCons always have External names, but these TyCons are never long-lived; |
|---|
| 3128 | they live only long enough to typecheck the TH quotation; the result is |
|---|
| 3129 | discarded. So it seems cool. |
|---|
| 3130 | |
|---|
| 3131 | Nevertheless -- Template Haskell folk: please test your code. The testsuite |
|---|
| 3132 | is OK but it's conceivable that I've broken something in TH. Let's see. |
|---|
| 3133 | |
|---|
| 3134 | ] |
|---|
| 3135 | [Make a debug check more refined |
|---|
| 3136 | simonpj@microsoft.com**20081003140144] |
|---|
| 3137 | [Add ASSERTs to all calls of nameModule |
|---|
| 3138 | simonpj@microsoft.com**20081003135334 |
|---|
| 3139 | |
|---|
| 3140 | nameModule fails on an InternalName. These ASSERTS tell you |
|---|
| 3141 | which call failed. |
|---|
| 3142 | |
|---|
| 3143 | ] |
|---|
| 3144 | [Let parseModule take a ModSummary like checkAndLoadModule did. |
|---|
| 3145 | Thomas Schilling <nominolo@googlemail.com>**20081002230412 |
|---|
| 3146 | |
|---|
| 3147 | To get the ModSummary for a ModuleName getModSummary can be used. |
|---|
| 3148 | It's not called find* or lookup* because it assumes that the module is |
|---|
| 3149 | in the module graph and throws an exception if it cannot be found. |
|---|
| 3150 | Overall, I'm not quite sure about the usefulness of this function |
|---|
| 3151 | since the user has no control about which filetype to grab (hs or |
|---|
| 3152 | hs-boot). |
|---|
| 3153 | ] |
|---|
| 3154 | [Remove some out-of-date entries from .darcs-boring |
|---|
| 3155 | Ian Lynagh <igloo@earth.li>**20081002201519] |
|---|
| 3156 | [TFs: Allow repeated variables in left-hand sides of instances |
|---|
| 3157 | Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20081002134539 |
|---|
| 3158 | |
|---|
| 3159 | MERGE TO 6.10 |
|---|
| 3160 | ] |
|---|
| 3161 | [Clean up some comments |
|---|
| 3162 | Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20081002074642 |
|---|
| 3163 | |
|---|
| 3164 | MERGE TO 6.10 |
|---|
| 3165 | ] |
|---|
| 3166 | [Make the new binder-swap stuff in OccurAnal work right for GlobalIds |
|---|
| 3167 | simonpj@microsoft.com**20081002133002 |
|---|
| 3168 | |
|---|
| 3169 | See Note [Binder swap on GlobalId scrutinees]. I hadn't got this |
|---|
| 3170 | right before, so repeated cases on imported Ids weren't getting optimised. |
|---|
| 3171 | |
|---|
| 3172 | |
|---|
| 3173 | ] |
|---|
| 3174 | [Minor refactoring only |
|---|
| 3175 | simonpj@microsoft.com**20081002132929] |
|---|
| 3176 | [Comments only |
|---|
| 3177 | simonpj@microsoft.com**20081002132833] |
|---|
| 3178 | [Zap dead-ness info appropriately in SpecConstr |
|---|
| 3179 | simonpj@microsoft.com**20081002132657 |
|---|
| 3180 | |
|---|
| 3181 | SpecConstr can make pattern binders come alive, so we must remember |
|---|
| 3182 | to zap their dead-variable annotation. See extendCaseBndrs. |
|---|
| 3183 | |
|---|
| 3184 | (This was triggering a Core Lint failure in DPH.) |
|---|
| 3185 | |
|---|
| 3186 | ] |
|---|
| 3187 | [Suppress invalid Core Lint complaint about lack of constructors |
|---|
| 3188 | simonpj@microsoft.com**20081002132426] |
|---|
| 3189 | [add some more GC roots (fixes conc048, and possibly some others) |
|---|
| 3190 | Simon Marlow <marlowsd@gmail.com>**20081001164427] |
|---|
| 3191 | [Document +RTS -hT |
|---|
| 3192 | Simon Marlow <marlowsd@gmail.com>**20081001163222 |
|---|
| 3193 | We forgot to document this in GHC 6.8 |
|---|
| 3194 | ] |
|---|
| 3195 | [fix new-qualified-operators link |
|---|
| 3196 | Simon Marlow <marlowsd@gmail.com>**20081001163105] |
|---|
| 3197 | [Proper error message for unsupported pattern signatures |
|---|
| 3198 | Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20081001144339 |
|---|
| 3199 | - Pattern signatures must be identical to the type expected for the pattern; |
|---|
| 3200 | see Note [Pattern coercions] |
|---|
| 3201 | - We now signal an appropriate error if an equality coercion would be needed |
|---|
| 3202 | (instead of just generating Core that doesn't typecheck) |
|---|
| 3203 | |
|---|
| 3204 | MERGE TO 6.10 |
|---|
| 3205 | ] |
|---|
| 3206 | [Prevent excessive inlining with DPH |
|---|
| 3207 | Roman Leshchinskiy <rl@cse.unsw.edu.au>**20081002012055 |
|---|
| 3208 | |
|---|
| 3209 | This adds a new flag -finline-if-enough-args which disables inlining for |
|---|
| 3210 | partially applied functions. It is automatically set by -Odph. This is a |
|---|
| 3211 | temporary hack and should remain undocumented. |
|---|
| 3212 | |
|---|
| 3213 | MERGE TO 6.10 |
|---|
| 3214 | |
|---|
| 3215 | ] |
|---|
| 3216 | [On Windows, check that we have a good version of windres when configuring |
|---|
| 3217 | Ian Lynagh <igloo@earth.li>**20081001171133] |
|---|
| 3218 | [Call $(PERL) rather than perl when making the manpage |
|---|
| 3219 | Ian Lynagh <igloo@earth.li>**20080930155054] |
|---|
| 3220 | [don't install the installPackage program |
|---|
| 3221 | Ian Lynagh <igloo@earth.li>**20080930145714] |
|---|
| 3222 | [Fix #2637: conc032(threaded2) failure |
|---|
| 3223 | Simon Marlow <marlowsd@gmail.com>**20081001135549 |
|---|
| 3224 | There was a race condition whereby a thread doing throwTo could be |
|---|
| 3225 | blocked on a thread that had finished, and the GC would detect this |
|---|
| 3226 | as a deadlock rather than raising the pending exception. We can't |
|---|
| 3227 | close the race, but we can make the right thing happen when the GC |
|---|
| 3228 | runs later. |
|---|
| 3229 | ] |
|---|
| 3230 | [Remove outdated link to OGI webpage |
|---|
| 3231 | Simon Marlow <marlowsd@gmail.com>**20080930150912] |
|---|
| 3232 | [TFs: Fixed InstContextNorm (and simplification of IPs) |
|---|
| 3233 | Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20081001131303 |
|---|
| 3234 | |
|---|
| 3235 | MERGE TO 6.10 |
|---|
| 3236 | ] |
|---|
| 3237 | [TcSimplify.reduceImplication: clean up |
|---|
| 3238 | Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20081001091315 |
|---|
| 3239 | - This cleans up some of the mess in reduceImplication and documents the |
|---|
| 3240 | precondition on the form of wanted equalities properly. |
|---|
| 3241 | - I also made the back off test a bit smarter by allowing to back off in the |
|---|
| 3242 | presence of wanted equalities as long as none of them got solved in the |
|---|
| 3243 | attempt. (That should save generating some superfluous bindings.) |
|---|
| 3244 | |
|---|
| 3245 | MERGE TO 6.10 |
|---|
| 3246 | ] |
|---|
| 3247 | [Make sure to zonk the kind of coercion variables |
|---|
| 3248 | Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20081001053243 |
|---|
| 3249 | |
|---|
| 3250 | MERGE TO 6.10 |
|---|
| 3251 | ] |
|---|
| 3252 | [Remover PROT_EXEC flag from mmap() |
|---|
| 3253 | Simon Marlow <marlowsd@gmail.com>**20080930141842 |
|---|
| 3254 | Needed for #738 fix |
|---|
| 3255 | ] |
|---|
| 3256 | [Fix #2410: carefully generate unique names for CAF CCs |
|---|
| 3257 | Simon Marlow <marlowsd@gmail.com>**20080930141812] |
|---|
| 3258 | [fix #2594: we were erroneously applying masks, as the reporter suggested |
|---|
| 3259 | Simon Marlow <marlowsd@gmail.com>**20080930115611 |
|---|
| 3260 | My guess is that this is left over from when we represented Int8 and |
|---|
| 3261 | friends as zero-extended rather than sign-extended. It's amazing it hasn't |
|---|
| 3262 | been noticed earlier. |
|---|
| 3263 | ] |
|---|
| 3264 | [Unconditionalize definition of DYNAMIC_* so that libffi.so/.dll is removed even when BuildSharedLibs is reset to NO |
|---|
| 3265 | Clemens Fruhwirth <clemens@endorphin.org>**20080930085449] |
|---|
| 3266 | [Type families: need to instantiate flexible skolems before other flexibles |
|---|
| 3267 | Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20080930053559 |
|---|
| 3268 | |
|---|
| 3269 | MERGE TO 6.10 |
|---|
| 3270 | ] |
|---|
| 3271 | [Fix warnings |
|---|
| 3272 | Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20080929142227] |
|---|
| 3273 | [Type families: consider subst rules both way |
|---|
| 3274 | Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20080929141040 |
|---|
| 3275 | - applySubstFam, applySubstVarVar & applySubstVarFam need to return their |
|---|
| 3276 | second argument -to be put into the todo list- if the rule would be |
|---|
| 3277 | applicable if the equalities would be supplied in the opposite order. |
|---|
| 3278 | |
|---|
| 3279 | MERGE TO 6.10 |
|---|
| 3280 | ] |
|---|
| 3281 | [Clean up a bit and improve an error message |
|---|
| 3282 | pepe**20080926211429] |
|---|
| 3283 | [Don't capture error calls in tryUser |
|---|
| 3284 | pepe**20080926204836 |
|---|
| 3285 | |
|---|
| 3286 | A previous patch slightly changed the semantics of tryUser. |
|---|
| 3287 | This patch restores the original behaviour |
|---|
| 3288 | (as expected in :print) |
|---|
| 3289 | |
|---|
| 3290 | ] |
|---|
| 3291 | [tweaks to this section of the docs |
|---|
| 3292 | Simon Marlow <simonmar@microsoft.com>**20080927141834] |
|---|
| 3293 | [Add -outputdir flag (#2295) |
|---|
| 3294 | Simon Marlow <simonmar@microsoft.com>**20080927141822] |
|---|
| 3295 | [oops, forgot to add -XNewQualifiedOperators to the flags table |
|---|
| 3296 | Simon Marlow <simonmar@microsoft.com>**20080923140449] |
|---|
| 3297 | [Fix making OS X installers from source tarballs |
|---|
| 3298 | Ian Lynagh <igloo@earth.li>**20080927150507 |
|---|
| 3299 | I'm not sure why it works in the HEAD, but when making an installer |
|---|
| 3300 | from the 6.10.1 beta configure hangs when doing the CHECK_HIST_ERRORS |
|---|
| 3301 | test (during rl_initialize, I believe). Giving make /dev/null as stdin |
|---|
| 3302 | fixes it. |
|---|
| 3303 | ] |
|---|
| 3304 | [Make the matching of the filename ghc.exe case insensitive, fixes bug #2603 |
|---|
| 3305 | Neil Mitchell <ndmitchell@gmail.com>**20080916160311] |
|---|
| 3306 | [Fix #2411: missing case for CATCH_STM_FRAME in raiseAsync() |
|---|
| 3307 | Simon Marlow <simonmar@microsoft.com>**20080926232806] |
|---|
| 3308 | [Fix parsing of -ignore-package flag. |
|---|
| 3309 | Bertram Felgenhauer <int-e@gmx.de>**20080925053820] |
|---|
| 3310 | [Add an example of how to use SCCs to the user guide |
|---|
| 3311 | Ian Lynagh <igloo@earth.li>**20080926203832] |
|---|
| 3312 | [Add some description of the +RTS -t/-s/-S output |
|---|
| 3313 | Ian Lynagh <igloo@earth.li>**20080926200203] |
|---|
| 3314 | [Remove a redundant options pragma |
|---|
| 3315 | Ian Lynagh <igloo@earth.li>**20080926152731] |
|---|
| 3316 | [Split ShowVersion etc off into a different type to DoInteractive etc |
|---|
| 3317 | Ian Lynagh <igloo@earth.li>**20080926140539 |
|---|
| 3318 | This fixes trac #1348 (ghci --help gave ghc's help), and also tidies |
|---|
| 3319 | things up a bit. Things would be even tidier if the usage.txt files were |
|---|
| 3320 | put into a .hs file, so that ShowUsage wouldn't need to be able to find |
|---|
| 3321 | the libdir. |
|---|
| 3322 | ] |
|---|
| 3323 | [Pass SRC_HC_OPTS to GHC when building GHC's Main.hs |
|---|
| 3324 | Ian Lynagh <igloo@earth.li>**20080926131609] |
|---|
| 3325 | [Improve runghc docs; fixes trac #2477 |
|---|
| 3326 | Ian Lynagh <igloo@earth.li>**20080926124425] |
|---|
| 3327 | [Type families: fixes in flattening & finalisation |
|---|
| 3328 | Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20080925225324 |
|---|
| 3329 | * Finalisation didn't do the right thing for equalities x ~ y, where |
|---|
| 3330 | x was instantiated, but not zonked and y flexible (need to do y := x) |
|---|
| 3331 | * During flattening we weren't careful enough when turning wanteds |
|---|
| 3332 | intermediates into locals |
|---|
| 3333 | |
|---|
| 3334 | Both bugs showed up in a small example of SPJ: |
|---|
| 3335 | |
|---|
| 3336 | linear :: HasTrie (Basis v) => (Basis v, v) |
|---|
| 3337 | linear = basisValue |
|---|
| 3338 | |
|---|
| 3339 | class HasTrie a where |
|---|
| 3340 | |
|---|
| 3341 | type family Basis u :: * |
|---|
| 3342 | |
|---|
| 3343 | basisValue :: (Basis v,v) |
|---|
| 3344 | basisValue = error "urk" |
|---|
| 3345 | |
|---|
| 3346 | ] |
|---|
| 3347 | [Fix the behaviour of flags like --help and --version; fixes trac #2620 |
|---|
| 3348 | Ian Lynagh <igloo@earth.li>**20080925165618 |
|---|
| 3349 | They should override other mode flags, not conflict with them |
|---|
| 3350 | ] |
|---|
| 3351 | [Follow the integer package changes |
|---|
| 3352 | Ian Lynagh <igloo@earth.li>**20080925133855] |
|---|
| 3353 | [Type families: fix decomposition problem |
|---|
| 3354 | Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20080925084139 |
|---|
| 3355 | * Fixes the problem reported in |
|---|
| 3356 | <http://www.haskell.org/pipermail/haskell-cafe/2008-July/044911.html> |
|---|
| 3357 | ] |
|---|
| 3358 | [Don't exit ghci if :info is called on an undefined identifier. |
|---|
| 3359 | Judah Jacobson <judah.jacobson@gmail.com>**20080924212422] |
|---|
| 3360 | [Fix maintainer-clean |
|---|
| 3361 | Ian Lynagh <igloo@earth.li>**20080924230553] |
|---|
| 3362 | [Use -f when making the runhaskell symlink |
|---|
| 3363 | Ian Lynagh <igloo@earth.li>**20080924124255 |
|---|
| 3364 | Otherwise installation fails if runhaskell already exists. |
|---|
| 3365 | ] |
|---|
| 3366 | [Use -perm -100 rather than -perm /a+x when looking for executable files |
|---|
| 3367 | Ian Lynagh <igloo@earth.li>**20080924124137 |
|---|
| 3368 | /a+x doesn't work on some Solaris and OS X machines. Spotted by |
|---|
| 3369 | Christian Maeder. |
|---|
| 3370 | ] |
|---|
| 3371 | [Use $(FIND) rather than find, as the former may be gfind |
|---|
| 3372 | Ian Lynagh <igloo@earth.li>**20080924123323] |
|---|
| 3373 | [Look for gfind as well as find |
|---|
| 3374 | Ian Lynagh <igloo@earth.li>**20080924123046] |
|---|
| 3375 | [In configure, don't call FPTOOLS_HADDOCK |
|---|
| 3376 | Ian Lynagh <igloo@earth.li>**20080924122558 |
|---|
| 3377 | We now use the in-tree haddock, so we don't need to look for it. |
|---|
| 3378 | ] |
|---|
| 3379 | [Use $(TAR) rather than tar |
|---|
| 3380 | Ian Lynagh <igloo@earth.li>**20080924121759 |
|---|
| 3381 | Fixes problems on Solaris, where we need to use gtar instead of tar |
|---|
| 3382 | ] |
|---|
| 3383 | [Add $(strip) to a Makefile test |
|---|
| 3384 | Ian Lynagh <igloo@earth.li>**20080924120940 |
|---|
| 3385 | Fixes making bindists on solaris. Patch from Christian Maeder. |
|---|
| 3386 | ] |
|---|
| 3387 | [Use test -f rather than test -e, for portability (Solaris) |
|---|
| 3388 | Ian Lynagh <igloo@earth.li>**20080924120840] |
|---|
| 3389 | [Remove some dependencies on bootstrapping.conf from libraries/Makefile |
|---|
| 3390 | Ian Lynagh <igloo@earth.li>**20080923205755 |
|---|
| 3391 | They were causing some unnecessary work: |
|---|
| 3392 | Running make in a built tree reregisters the GHC package in |
|---|
| 3393 | bootstrapping.conf, and the build system thought that this updated |
|---|
| 3394 | timestamp meant that the configure stamps were out of date. This is |
|---|
| 3395 | particularly bad for the libraries with configure scripts, as those |
|---|
| 3396 | take a while to run. |
|---|
| 3397 | |
|---|
| 3398 | The bootstrapping.conf is built in an earlier phase ("make boot") so |
|---|
| 3399 | one shouldn't rely on the dependencies anyway. |
|---|
| 3400 | ] |
|---|
| 3401 | [Bump the version number to 6.11 |
|---|
| 3402 | Ian Lynagh <igloo@earth.li>**20080923165613] |
|---|
| 3403 | [Generalise type of 'defaultErrorHandler' so it can be used inside a Ghc session. |
|---|
| 3404 | Thomas Schilling <nominolo@googlemail.com>**20080921085647] |
|---|
| 3405 | [Make "sh -e boot" work |
|---|
| 3406 | Ian Lynagh <igloo@earth.li>**20080921111508] |
|---|
| 3407 | [Use -f rather than -e for portability |
|---|
| 3408 | Ian Lynagh <igloo@earth.li>**20080921111436] |
|---|
| 3409 | [Add some special cases for putting dph in bindists |
|---|
| 3410 | Ian Lynagh <igloo@earth.li>**20080921000406] |
|---|
| 3411 | [Escape a hash in the Makefile (it was breaking source dist creation) |
|---|
| 3412 | Ian Lynagh <igloo@earth.li>**20080920232945] |
|---|
| 3413 | [Disallow package flags in OPTIONS_GHC pragmas (#2499) |
|---|
| 3414 | Simon Marlow <simonmar@microsoft.com>**20080923173904] |
|---|
| 3415 | [#2566: emit a warning for 'ghc -c foo.bar' |
|---|
| 3416 | Simon Marlow <simonmar@microsoft.com>**20080923144956 |
|---|
| 3417 | |
|---|
| 3418 | $ ghc -c foo.bar |
|---|
| 3419 | Warning: the following files would be used as linker inputs, but linking is not being done: foo.bar |
|---|
| 3420 | ghc: no input files |
|---|
| 3421 | Usage: For basic information, try the `--help' option. |
|---|
| 3422 | ] |
|---|
| 3423 | [Fix to new executable allocation code (fixed print002 etc.) |
|---|
| 3424 | Simon Marlow <simonmar@microsoft.com>**20080922210915 |
|---|
| 3425 | The problem here is caused by the fact that info tables include a |
|---|
| 3426 | relative offset to the string naming the constructor. Executable |
|---|
| 3427 | memory now resides at two places in the address space: one for writing |
|---|
| 3428 | and one for executing. In the info tables generated by GHCi, we were |
|---|
| 3429 | calculating the offset relative to the writable instance, rather than |
|---|
| 3430 | the executable instance, which meant that the GHCi debugger couldn't |
|---|
| 3431 | find the names for constructors it found in the heap. |
|---|
| 3432 | ] |
|---|
| 3433 | [clean sm/Evac_thr.c and sm/Scav_thr.c |
|---|
| 3434 | Simon Marlow <simonmar@microsoft.com>**20080922152827] |
|---|
| 3435 | [add -XNewQualifiedOperators (Haskell' qualified operator syntax) |
|---|
| 3436 | Simon Marlow <simonmar@microsoft.com>**20080922152340] |
|---|
| 3437 | [Fix Trac #2597 (first bug): correct type checking for empty list |
|---|
| 3438 | simonpj@microsoft.com**20080920212010 |
|---|
| 3439 | |
|---|
| 3440 | The GHC front end never generates (ExplicitList []), but TH can. |
|---|
| 3441 | This patch makes the typechecker robust to such programs. |
|---|
| 3442 | |
|---|
| 3443 | ] |
|---|
| 3444 | [Fix Trac #2597 (second bug): complain about an empty DoE block |
|---|
| 3445 | simonpj@microsoft.com**20080920211101 |
|---|
| 3446 | |
|---|
| 3447 | When converting an empty do-block from TH syntax to HsSyn, |
|---|
| 3448 | complain rather than crashing. |
|---|
| 3449 | |
|---|
| 3450 | ] |
|---|
| 3451 | [Update dependencies |
|---|
| 3452 | Ian Lynagh <igloo@earth.li>**20080920183534] |
|---|
| 3453 | [Fix building with GHC 6.6 |
|---|
| 3454 | Ian Lynagh <igloo@earth.li>**20080920162918] |
|---|
| 3455 | [Remove fno-method-sharing from the list of static flags |
|---|
| 3456 | Ian Lynagh <igloo@earth.li>**20080920010635 |
|---|
| 3457 | It is now a dynamic flag |
|---|
| 3458 | ] |
|---|
| 3459 | [Tidy up the treatment of dead binders |
|---|
| 3460 | simonpj@microsoft.com**20080920175238 |
|---|
| 3461 | |
|---|
| 3462 | This patch does a lot of tidying up of the way that dead variables are |
|---|
| 3463 | handled in Core. Just the sort of thing to do on an aeroplane. |
|---|
| 3464 | |
|---|
| 3465 | * The tricky "binder-swap" optimisation is moved from the Simplifier |
|---|
| 3466 | to the Occurrence Analyser. See Note [Binder swap] in OccurAnal. |
|---|
| 3467 | This is really a nice change. It should reduce the number of |
|---|
| 3468 | simplifier iteratoins (slightly perhaps). And it means that |
|---|
| 3469 | we can be much less pessimistic about zapping occurrence info |
|---|
| 3470 | on binders in a case expression. |
|---|
| 3471 | |
|---|
| 3472 | * For example: |
|---|
| 3473 | case x of y { (a,b) -> e } |
|---|
| 3474 | Previously, each time around, even if y,a,b were all dead, the |
|---|
| 3475 | Simplifier would pessimistically zap their OccInfo, so that we |
|---|
| 3476 | can't see they are dead any more. As a result virtually no |
|---|
| 3477 | case expression ended up with dead binders. This wasn't Bad |
|---|
| 3478 | in itself, but it always felt wrong. |
|---|
| 3479 | |
|---|
| 3480 | * I added a check to CoreLint to check that a dead binder really |
|---|
| 3481 | isn't used. That showed up a couple of bugs in CSE. (Only in |
|---|
| 3482 | this sense -- they didn't really matter.) |
|---|
| 3483 | |
|---|
| 3484 | * I've changed the PprCore printer to print "_" for a dead variable. |
|---|
| 3485 | (Use -dppr-debug to see it again.) This reduces clutter quite a |
|---|
| 3486 | bit, and of course it's much more useful with the above change. |
|---|
| 3487 | |
|---|
| 3488 | * Another benefit of the binder-swap change is that I could get rid of |
|---|
| 3489 | the Simplifier hack (working, but hacky) in which the InScopeSet was |
|---|
| 3490 | used to map a variable to a *different* variable. That allowed me |
|---|
| 3491 | to remove VarEnv.modifyInScopeSet, and to simplify lookupInScopeSet |
|---|
| 3492 | so that it doesn't look for a fixpoint. This fixes no bugs, but |
|---|
| 3493 | is a useful cleanup. |
|---|
| 3494 | |
|---|
| 3495 | * Roman pointed out that Id.mkWildId is jolly dangerous, because |
|---|
| 3496 | of its fixed unique. So I've |
|---|
| 3497 | |
|---|
| 3498 | - localied it to MkCore, where it is private (not exported) |
|---|
| 3499 | |
|---|
| 3500 | - renamed it to 'mkWildBinder' to stress that you should only |
|---|
| 3501 | use it at binding sites, unless you really know what you are |
|---|
| 3502 | doing |
|---|
| 3503 | |
|---|
| 3504 | - provided a function MkCore.mkWildCase that emodies the most |
|---|
| 3505 | common use of mkWildId, and use that elsewhere |
|---|
| 3506 | |
|---|
| 3507 | So things are much better |
|---|
| 3508 | |
|---|
| 3509 | * A knock-on change is that I found a common pattern of localising |
|---|
| 3510 | a potentially global Id, and made a function for it: Id.localiseId |
|---|
| 3511 | |
|---|
| 3512 | ] |
|---|
| 3513 | [Gix the ghcii script |
|---|
| 3514 | Ian Lynagh <igloo@earth.li>**20080919174651 |
|---|
| 3515 | The ghc executable name doesn't have a version number on Windows, so |
|---|
| 3516 | don't put one in the script. |
|---|
| 3517 | ] |
|---|
| 3518 | [Create runhaskell as well as runghc |
|---|
| 3519 | Ian Lynagh <igloo@earth.li>**20080919153010] |
|---|
| 3520 | [On Linux use libffi for allocating executable memory (fixed #738) |
|---|
| 3521 | Simon Marlow <marlowsd@gmail.com>**20080919134602] |
|---|
| 3522 | [Move the context_switch flag into the Capability |
|---|
| 3523 | Simon Marlow <marlowsd@gmail.com>**20080919102601 |
|---|
| 3524 | Fixes a long-standing bug that could in some cases cause sub-optimal |
|---|
| 3525 | scheduling behaviour. |
|---|
| 3526 | ] |
|---|
| 3527 | [Fix building the extralibs tarball |
|---|
| 3528 | Ian Lynagh <igloo@earth.li>**20080919133555 |
|---|
| 3529 | We now need to dig the appropriate lines out of packages, rather than |
|---|
| 3530 | just catting libraries/extra-packages, in order to find out what the |
|---|
| 3531 | extralibs are. |
|---|
| 3532 | ] |
|---|
| 3533 | [Install libffi when installing frmo a bindist |
|---|
| 3534 | Ian Lynagh <igloo@earth.li>**20080919130332] |
|---|
| 3535 | [Fix how we put libffi into bindists |
|---|
| 3536 | Ian Lynagh <igloo@earth.li>**20080919125528] |
|---|
| 3537 | [TAG 6.10 branch has been forked |
|---|
| 3538 | Ian Lynagh <igloo@earth.li>**20080919123437] |
|---|
| 3539 | [Don't require Parser.y in a source dist |
|---|
| 3540 | Ian Lynagh <igloo@earth.li>**20080919115831] |
|---|
| 3541 | [Add HpcParser.hs to source dists |
|---|
| 3542 | Ian Lynagh <igloo@earth.li>**20080919115816] |
|---|
| 3543 | [Fix the list of generated files that need to go into the source dists |
|---|
| 3544 | Ian Lynagh <igloo@earth.li>**20080919112522] |
|---|
| 3545 | [Improve documentation of overlapping instances |
|---|
| 3546 | simonpj@microsoft.com**20080919093147] |
|---|
| 3547 | [Put generated files in source dists |
|---|
| 3548 | Ian Lynagh <igloo@earth.li>**20080918194424 |
|---|
| 3549 | We don't want to require that users building source dists have alex/happy |
|---|
| 3550 | ] |
|---|
| 3551 | [Add libraries/syb to .darcs-boring |
|---|
| 3552 | Ian Lynagh <igloo@earth.li>**20080918190116] |
|---|
| 3553 | [Fix a couple of issues with :print |
|---|
| 3554 | pepe**20080918122133 |
|---|
| 3555 | |
|---|
| 3556 | - Ticket #1995: Unsoundness with newtypes |
|---|
| 3557 | - Ticket #2475: "Can't unify" error when stopped at an exception |
|---|
| 3558 | |
|---|
| 3559 | In addition this patch adds the following: |
|---|
| 3560 | |
|---|
| 3561 | - Unfailingness: RTTI cannot panic anymore. |
|---|
| 3562 | In case of failure, it recovers gracefully by returning the "I know nothing" type |
|---|
| 3563 | - A -ddump-rtti flag |
|---|
| 3564 | |
|---|
| 3565 | ] |
|---|
| 3566 | [wibble |
|---|
| 3567 | pepe <mnislaih@gmail.com>**20080418172303] |
|---|
| 3568 | [RichTokenStream support |
|---|
| 3569 | Chaddai Fouche <chaddai.fouche@gmail.com>**20080918165256 |
|---|
| 3570 | |
|---|
| 3571 | This patch adds support for raw token streams, that contain more |
|---|
| 3572 | information than normal token streams (they contains comments at |
|---|
| 3573 | least). The "lexTokenStream" function brings this support to the |
|---|
| 3574 | Lexer module. In addition to that, functions have been added to |
|---|
| 3575 | the GHC module to make easier to recover of the token stream of |
|---|
| 3576 | a module ("getTokenStream"). |
|---|
| 3577 | |
|---|
| 3578 | Building on that, I added what could be called "rich token |
|---|
| 3579 | stream": token stream to which have been added the source string |
|---|
| 3580 | corresponding to each token, the function addSourceToToken takes |
|---|
| 3581 | a StringBuffer and a starting SrcLoc and a token stream and build |
|---|
| 3582 | this rich token stream. getRichTokenStream is a convenience |
|---|
| 3583 | function to get a module rich token stream. "showRichTokenStream" |
|---|
| 3584 | use the SrcLoc information in such a token stream to get a string |
|---|
| 3585 | similar to the original source (except unsignificant |
|---|
| 3586 | whitespaces). Thus "putStrLn . showRichTokenStream =<< |
|---|
| 3587 | getRichTokenStream s mod" should print a valid module source, the |
|---|
| 3588 | interesting part being to modify the token stream between the get |
|---|
| 3589 | and the show of course. |
|---|
| 3590 | ] |
|---|
| 3591 | [When passing gcc -B, also tell it where the mingw include directory is |
|---|
| 3592 | Ian Lynagh <igloo@earth.li>**20080918143312] |
|---|
| 3593 | [Don't put the mingw directory in RTS's package.conf |
|---|
| 3594 | Ian Lynagh <igloo@earth.li>**20080918143118] |
|---|
| 3595 | [Be more forceful when cleaning in compiler/ and ghc/ |
|---|
| 3596 | Ian Lynagh <igloo@earth.li>**20080918134443 |
|---|
| 3597 | Now that the Cabal file is generated by configure, it would be nice |
|---|
| 3598 | if clean worked even if the cabal file is missing. So now we just rm -rf |
|---|
| 3599 | the dist directory. |
|---|
| 3600 | ] |
|---|
| 3601 | [Generate ghc.cabal and ghc-bin.cabal with configure |
|---|
| 3602 | Ian Lynagh <igloo@earth.li>**20080918133636 |
|---|
| 3603 | This allows us to put the proper version number into them |
|---|
| 3604 | ] |
|---|
| 3605 | [Make the ghci scripts point to the versioned GHC program, not just "ghc" |
|---|
| 3606 | Ian Lynagh <igloo@earth.li>**20080918122516] |
|---|
| 3607 | [Fix Trac #1470: improve handling of recursive instances (needed for SYB3) |
|---|
| 3608 | simonpj@microsoft.com**20080918161719 |
|---|
| 3609 | |
|---|
| 3610 | This bug has been hanging around for a long time, as you'll see by its |
|---|
| 3611 | number. The fix implements a feature that is really needed by SYB3, to |
|---|
| 3612 | allow an instance to (rather indirectly) refer to itself. The trickiness |
|---|
| 3613 | comes when solving the superclass constraints. |
|---|
| 3614 | |
|---|
| 3615 | The whoel issue is explained in Note [Recursive instances and superclases] |
|---|
| 3616 | in TcSimplify. |
|---|
| 3617 | |
|---|
| 3618 | In cracking this one I found I could remove the WantSCs argument to the |
|---|
| 3619 | ReduceMe flag, which is a worthwhile simplification. Good! |
|---|
| 3620 | |
|---|
| 3621 | ] |
|---|
| 3622 | [Comments only |
|---|
| 3623 | simonpj@microsoft.com**20080918155602] |
|---|
| 3624 | [Replace ASSERT with WARN, and explain why |
|---|
| 3625 | simonpj@microsoft.com**20080918155245 |
|---|
| 3626 | |
|---|
| 3627 | The DPH library tripped an ASSERT. The code is actually OK, but it's |
|---|
| 3628 | badly-optimised so I changed it to WARN. The issue here is explained |
|---|
| 3629 | in ClosureInfo, Note [Unsafe coerce complications]. |
|---|
| 3630 | |
|---|
| 3631 | ] |
|---|
| 3632 | [Add a missing "prime" (env' --> env'') thereby fixing a tripping WARN. Hurrah! |
|---|
| 3633 | simonpj@microsoft.com**20080918155144] |
|---|
| 3634 | [Fix nasty infelicity: do not short-cut empty substitution in the simplifier |
|---|
| 3635 | simonpj@microsoft.com**20080917162910 |
|---|
| 3636 | |
|---|
| 3637 | I was perplexed about why an arity-related WARN was tripping. It took |
|---|
| 3638 | me _day_ (sigh) to find that it was because SimplEnv.substExpr was taking |
|---|
| 3639 | a short cut when the substitution was empty, thereby not subsituting for |
|---|
| 3640 | Ids in scope, which must be done (CoreSubst Note [Extending the Subst]). |
|---|
| 3641 | |
|---|
| 3642 | The fix is a matter of deleting the "optimisation". Same with |
|---|
| 3643 | CoreSubst.substSpec, although I don't know if that actually caused a |
|---|
| 3644 | probem. |
|---|
| 3645 | |
|---|
| 3646 | ] |
|---|
| 3647 | [Avoid arity reduction when doing eta-reduce |
|---|
| 3648 | simonpj@microsoft.com**20080917162704 |
|---|
| 3649 | |
|---|
| 3650 | We like things with high arity, so when doing eta reduction |
|---|
| 3651 | it's probably a good idea to avoid reducing arity. |
|---|
| 3652 | |
|---|
| 3653 | ] |
|---|
| 3654 | [Add extra WARN test |
|---|
| 3655 | simonpj@microsoft.com**20080917162434 |
|---|
| 3656 | |
|---|
| 3657 | This warning tests that the arity of a function does not decrease. |
|---|
| 3658 | And that it's at least as great as the strictness signature. |
|---|
| 3659 | |
|---|
| 3660 | Failing this test isn't a disater, but it's distinctly odd and |
|---|
| 3661 | usually indicates that not enough information is getting propagated |
|---|
| 3662 | around, and hence you may get more simplifier iterations. |
|---|
| 3663 | |
|---|
| 3664 | ] |
|---|
| 3665 | [Comments only |
|---|
| 3666 | simonpj@microsoft.com**20080917162350] |
|---|
| 3667 | [Re-adjust interaction between -ddump flags and force-recompilation |
|---|
| 3668 | simonpj@microsoft.com**20080917161920 |
|---|
| 3669 | |
|---|
| 3670 | If you say -ddump-xx we effectively add -fforce-recomp, so that you |
|---|
| 3671 | see your dump output. But this works badly in --make mode, because |
|---|
| 3672 | you get the ddump output for every module, which is probably not what |
|---|
| 3673 | you want. This patch forces recompilation with -ddump-X only in one-shot |
|---|
| 3674 | mode. |
|---|
| 3675 | |
|---|
| 3676 | Of course, this only affects people using -ddump options. |
|---|
| 3677 | |
|---|
| 3678 | ] |
|---|
| 3679 | [Add Outputable GhcMode instance |
|---|
| 3680 | simonpj@microsoft.com**20080917161847] |
|---|
| 3681 | [Improve error reporting for 'deriving' (Trac #2604) |
|---|
| 3682 | simonpj@microsoft.com**20080917135104] |
|---|
| 3683 | [Add link to GADT paper re rigid types |
|---|
| 3684 | simonpj@microsoft.com**20080916094521] |
|---|
| 3685 | [Fix MacOS X build: don't believe __GNUC_GNU_INLINE__ on MacOS X |
|---|
| 3686 | Simon Marlow <marlowsd@gmail.com>**20080918112856] |
|---|
| 3687 | [require Alex version 2.1.0 |
|---|
| 3688 | Simon Marlow <marlowsd@gmail.com>**20080918112812 |
|---|
| 3689 | Having 2.0.1 causes some unicode tests to fail |
|---|
| 3690 | ] |
|---|
| 3691 | [Type families: fixes in the new solver |
|---|
| 3692 | Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20080918100934] |
|---|
| 3693 | [ext-core library: Parser fixes; make it build with the HEAD |
|---|
| 3694 | Tim Chevalier <chevalier@alum.wellesley.edu>**20080918090349 |
|---|
| 3695 | |
|---|
| 3696 | In the ext-core parser I guess I never tested: |
|---|
| 3697 | * existential type variable bindings in case alts |
|---|
| 3698 | * empty data declarations |
|---|
| 3699 | |
|---|
| 3700 | That'll learn me! |
|---|
| 3701 | ] |
|---|
| 3702 | [Wibble ghc-pkg imports to fix building on Windows |
|---|
| 3703 | Ian Lynagh <igloo@earth.li>**20080917210813] |
|---|
| 3704 | [ghc-pkg needs to make package.conf with sensible permissions |
|---|
| 3705 | Ian Lynagh <igloo@earth.li>**20080917192155 |
|---|
| 3706 | It was calling openTempFile which uses a 600 permissions mask. |
|---|
| 3707 | ] |
|---|
| 3708 | [Change 'loadWithCompiler' callback argument to just print warnings. |
|---|
| 3709 | Thomas Schilling <nominolo@googlemail.com>**20080917102925 |
|---|
| 3710 | Rename function accordingly. |
|---|
| 3711 | |
|---|
| 3712 | The callback wasn't very flexible to begin with. There's pretty much |
|---|
| 3713 | no way around to calling 'compile' inside that callback since |
|---|
| 3714 | 'upsweep' depends on certain side effects of compile. It therefore |
|---|
| 3715 | makes more sense to restrict the callback to its intended use only, |
|---|
| 3716 | namely to log warnings and errors. |
|---|
| 3717 | ] |
|---|
| 3718 | [Fix: GhcStage2HcOpts were being added to stage 3 too |
|---|
| 3719 | Simon Marlow <marlowsd@gmail.com>**20080917085917] |
|---|
| 3720 | [Type families: unify with family apps in checking mode |
|---|
| 3721 | Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20080917062548] |
|---|
| 3722 | [Type families: bug fixes |
|---|
| 3723 | Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20080916151254] |
|---|
| 3724 | [Keep sysnonyms folded in equalities if possible |
|---|
| 3725 | Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20080916075700] |
|---|
| 3726 | [Type families: apply flattening coercions in the right order |
|---|
| 3727 | Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20080916055136] |
|---|
| 3728 | [TcTyFuns: tidy warning |
|---|
| 3729 | Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20080915031423] |
|---|
| 3730 | [Signature for Inst.isValidWantedEqInst |
|---|
| 3731 | Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20080915030118] |
|---|
| 3732 | [Remember if RewriteInst is swapped & bug fixes |
|---|
| 3733 | Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20080914163639] |
|---|
| 3734 | [Type families: fixed all non-termination in the testsuite |
|---|
| 3735 | Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20080914120638] |
|---|
| 3736 | [Type families: completed the new equality solver |
|---|
| 3737 | Manuel M T Chakravarty <chak@cse.unsw.edu.au>**20080913133631 |
|---|
| 3738 | - Implements normalisation of class constraints containing synonym family |
|---|
| 3739 | applications or skolems refined by local equalities. |
|---|
| 3740 | - Clean up of TcSimplify.reduceContext by using the new equality solver. |
|---|
| 3741 | - Removed all the now unused code of the old algorithm. |
|---|
| 3742 | - This completes the implementation of the new algorithm, but it is largely |
|---|
| 3743 | untested => many regressions. |
|---|
| 3744 | ] |
|---|
| 3745 | [Use the new -optdep flag replacements when building with >= GHC 6.9 |
|---|
| 3746 | Ian Lynagh <igloo@earth.li>**20080916220057 |
|---|
| 3747 | Fix building the HEAD with itself |
|---|
| 3748 | ] |
|---|
| 3749 | [Use "exec" when running ghc in the wrapper |
|---|
| 3750 | Ian Lynagh <igloo@earth.li>**20080915100217] |
|---|
| 3751 | [Add "#!/bin/sh" to runghc.wrapper |
|---|
| 3752 | Ian Lynagh <igloo@earth.li>**20080914153507] |
|---|
| 3753 | [Add a "#!/bin/sh" to ghc.wrapper |
|---|
| 3754 | Ian Lynagh <igloo@earth.li>**20080914153344] |
|---|
| 3755 | [Fixing directory creation to not create "" directories inside hpc report (harmless but needless) |
|---|
| 3756 | andygill@ku.edu**20080916172313] |
|---|
| 3757 | [Fix Trac #2052 Allowing hpc to understand hsc files. |
|---|
| 3758 | andygill@ku.edu**20080916030521] |
|---|
| 3759 | [Fix Trac #2311: creates subdirs for package coverage information |
|---|
| 3760 | andygill@ku.edu**20080915204322] |
|---|
| 3761 | [FIX #2469: sort out our static/extern inline story |
|---|
| 3762 | Simon Marlow <marlowsd@gmail.com>**20080916132222 |
|---|
| 3763 | gcc has changed the meaning of "extern inline" when certain flags are |
|---|
| 3764 | on (e.g. --std=gnu99), and this broke our use of it in the header |
|---|
| 3765 | files. |
|---|
| 3766 | ] |
|---|
| 3767 | [Fix a warning |
|---|
| 3768 | Simon Marlow <marlowsd@gmail.com>**20080916130922] |
|---|
| 3769 | [Stop using mremap() to allocate space for trampolines |
|---|
| 3770 | Simon Marlow <marlowsd@gmail.com>**20080915145924 |
|---|
| 3771 | |
|---|
| 3772 | This was causing problems because sometimes mremap() moved the memory |
|---|
| 3773 | we had allocated from the low 2Gb to above the 2Gb boundary, causing |
|---|
| 3774 | some linkages to fail. There's no MAP_32BIT flag to mremap(). |
|---|
| 3775 | |
|---|
| 3776 | So now we just use mmap(MAP_ANON|MAP_32BIT) to allocated space for the |
|---|
| 3777 | trampolines. People without MAP_32BIT (eg. *BSD) will still have to |
|---|
| 3778 | do something else here, such as allocating memory from a fixed |
|---|
| 3779 | address; so I've made it slightly easier for those guys, but there's |
|---|
| 3780 | still work to do (#2063). |
|---|
| 3781 | |
|---|
| 3782 | One solution (that Simon PJ is advocating) is to turn on -fPIC by |
|---|
| 3783 | default on x86-64. This is a good solution as it removes the need for |
|---|
| 3784 | MAP_32BIT, but doesn't work with -fvia-C, so probably this is for |
|---|
| 3785 | later. |
|---|
| 3786 | ] |
|---|
| 3787 | [add $(GhcStage[123]HcOpts) |
|---|
| 3788 | Simon Marlow <marlowsd@gmail.com>**20080912155549] |
|---|
| 3789 | [Improve handling of -fdph-* flags |
|---|
| 3790 | Roman Leshchinskiy <rl@cse.unsw.edu.au>**20080916034746] |
|---|
| 3791 | [Add -fdph-this |
|---|
| 3792 | Roman Leshchinskiy <rl@cse.unsw.edu.au>**20080916033710] |
|---|
| 3793 | [Remove last traces of package ndp |
|---|
| 3794 | Roman Leshchinskiy <rl@cse.unsw.edu.au>**20080916033428] |
|---|
| 3795 | [Clean up vectorisation error messages |
|---|
| 3796 | Roman Leshchinskiy <rl@cse.unsw.edu.au>**20080916013236] |
|---|
| 3797 | [Fix vectoriser bug |
|---|
| 3798 | Roman Leshchinskiy <rl@cse.unsw.edu.au>**20080915042823 |
|---|
| 3799 | |
|---|
| 3800 | We were using mkWildId in situations where it cause disastrous shadowing |
|---|
| 3801 | ] |
|---|
| 3802 | [Track changes to dph |
|---|
| 3803 | Roman Leshchinskiy <rl@cse.unsw.edu.au>**20080912114028] |
|---|
| 3804 | [Change desugaring of PArr literals |
|---|
| 3805 | Roman Leshchinskiy <rl@cse.unsw.edu.au>**20080912015609] |
|---|
| 3806 | [Expose the dph packages automatically if -dph-* is set |
|---|
| 3807 | Roman Leshchinskiy <rl@cse.unsw.edu.au>**20080912004403] |
|---|
| 3808 | [Don't panic on non-vectorisable expressions |
|---|
| 3809 | Roman Leshchinskiy <rl@cse.unsw.edu.au>**20080911054333] |
|---|
| 3810 | [-Odph implies -fno-spec-constr-count |
|---|
| 3811 | Roman Leshchinskiy <rl@cse.unsw.edu.au>**20080910045339] |
|---|
| 3812 | [Improve warning for SpecConstr |
|---|
| 3813 | simonpj@microsoft.com**20080915154908] |
|---|
| 3814 | [White space only |
|---|
| 3815 | simonpj@microsoft.com**20080915154841] |
|---|
| 3816 | [Minor refactoring to get rid of Type.splitNewTyConApp |
|---|
| 3817 | simonpj@microsoft.com**20080915072946] |
|---|
| 3818 | [Refactor the desugaring of RULE lhss a bit |
|---|
| 3819 | simonpj@microsoft.com**20080915150601 |
|---|
| 3820 | |
|---|
| 3821 | This is just a tidy-up. Previously we were calling occurAnalyse |
|---|
| 3822 | twice on each LHS which was silly and a bit unclean too. |
|---|
| 3823 | |
|---|
| 3824 | This patch should have no overall effect, though. |
|---|
| 3825 | |
|---|
| 3826 | ] |
|---|
| 3827 | [Do not use the Static Arg Transformation by default with -O2 |
|---|
| 3828 | simonpj@microsoft.com**20080915150433 |
|---|
| 3829 | |
|---|
| 3830 | Max has some more heuristics to add, and is meanwhile worried |
|---|
| 3831 | that having SAT on by default will make some highly-tuned array |
|---|
| 3832 | programs worse. So it's off by default. |
|---|
| 3833 | |
|---|
| 3834 | Use -fstatic-argument-transformation to switch it on. |
|---|
| 3835 | |
|---|
| 3836 | ] |
|---|
| 3837 | [Comments, and a couple of asserts, only |
|---|
| 3838 | simonpj@microsoft.com**20080914114641] |
|---|
| 3839 | [Fix Trac #2587: take account of type lets |
|---|
| 3840 | simonpj@microsoft.com**20080914113434 |
|---|
| 3841 | |
|---|
| 3842 | GHC allows a non-recursive let for type varaibles |
|---|
| 3843 | let a = TYPE ty in ... |
|---|
| 3844 | But the free-variable finder had not caught up with this |
|---|
| 3845 | fact. This patch catches up. |
|---|
| 3846 | |
|---|
| 3847 | ] |
|---|
| 3848 | [Don't try to float type-lets |
|---|
| 3849 | simonpj@microsoft.com**20080914113324 |
|---|
| 3850 | |
|---|
| 3851 | A type let shouldn't really occur in SetLevels, but if it does, |
|---|
| 3852 | this patch makes sure it is left alone. |
|---|
| 3853 | |
|---|
| 3854 | ] |
|---|
| 3855 | [add refs and fix a bug (noted by Peter Gammie) in docs of arrow notation |
|---|
| 3856 | Ross Paterson <ross@soi.city.ac.uk>**20080915104757] |
|---|
| 3857 | [Generalise type of 'withExtendedLinkEnv'. |
|---|
| 3858 | Thomas Schilling <nominolo@googlemail.com>**20080915085738] |
|---|
| 3859 | [Use 'GhcMonad' in ghci/InteractiveUI. |
|---|
| 3860 | Thomas Schilling <nominolo@googlemail.com>**20080915085633] |
|---|
| 3861 | [Use 'GhcMonad' in ghci/GhciTags. |
|---|
| 3862 | Thomas Schilling <nominolo@googlemail.com>**20080915084922] |
|---|
| 3863 | [Use 'GhcMonad' in ghci/Debugger. |
|---|
| 3864 | Thomas Schilling <nominolo@googlemail.com>**20080915084738] |
|---|
| 3865 | [Use 'GhcMonad' in ghci/GhciMonad. |
|---|
| 3866 | Thomas Schilling <nominolo@googlemail.com>**20080915084646] |
|---|
| 3867 | [Use 'GhcMonad' in ghc/Main. |
|---|
| 3868 | Thomas Schilling <nominolo@googlemail.com>**20080914232957] |
|---|
| 3869 | [Require PatternSignatures for bootstrapping compiler. |
|---|
| 3870 | Thomas Schilling <nominolo@googlemail.com>**20080914232642] |
|---|
| 3871 | [Use 'GhcMonad' in InteractiveEval. |
|---|
| 3872 | Thomas Schilling <nominolo@googlemail.com>**20080914232454] |
|---|
| 3873 | [Use 'GhcMonad' in GHC and split up checkModule into phases. |
|---|
| 3874 | Thomas Schilling <nominolo@googlemail.com>**20080914232044 |
|---|
| 3875 | |
|---|
| 3876 | I'm not sure I covered all the ways of throwing errors in the code. |
|---|
| 3877 | Some functions throw ProgramErrors, some error messages. It's still |
|---|
| 3878 | quite a mess, but we're getting closer. The missing cases are mostly |
|---|
| 3879 | errors that cannot be fixed by the API client either or are a result |
|---|
| 3880 | of wrong usage, so are in any case fatal. |
|---|
| 3881 | |
|---|
| 3882 | One function, 'getModuleInfo', still returns a 'Maybe', but the |
|---|
| 3883 | documentation suggests it should always succeed. So I may change that |
|---|
| 3884 | soon. |
|---|
| 3885 | |
|---|
| 3886 | The spit-up of of 'checkModule' has pros and cons. The various forms |
|---|
| 3887 | of 'checkModule*' now become: |
|---|
| 3888 | |
|---|
| 3889 | checkAndLoadModule ms False ~~> |
|---|
| 3890 | loadModule =<< typecheckModule =<< parseModule (ms_mod_name ms) |
|---|
| 3891 | |
|---|
| 3892 | checkAndLoadModule ms True ~~> |
|---|
| 3893 | loadModule =<< desugarModule =<< typecheckModule =<< parseModule (ms_mod_name ms) |
|---|
| 3894 | |
|---|
| 3895 | checkModule mn False ~~> |
|---|
| 3896 | typecheckModule =<< parseModule mn |
|---|
| 3897 | |
|---|
| 3898 | checkModule mn True ~~> |
|---|
| 3899 | desugarModule =<< typecheckModule =<< parseModule mn |
|---|
| 3900 | |
|---|
| 3901 | The old APIs cannot easily be provided, since the result type would be |
|---|
| 3902 | different depending on the second argument. However, a more |
|---|
| 3903 | convenient API can be modelled on top of these four functions |
|---|
| 3904 | ({parse,typecheck,desugar,load}Module). |
|---|
| 3905 | ] |
|---|
| 3906 | [Use 'GhcMonad' in DriverPipeline. Also haddockify a bit while we're at it. |
|---|
| 3907 | Thomas Schilling <nominolo@googlemail.com>**20080914220628] |
|---|
| 3908 | [Use 'GhcMonad' in HscMain. |
|---|
| 3909 | Thomas Schilling <nominolo@googlemail.com>**20080914213655] |
|---|
| 3910 | [Use 'GhcMonad' in DriverMkDepend. |
|---|
| 3911 | Thomas Schilling <nominolo@googlemail.com>**20080914212113] |
|---|
| 3912 | [Haddockify DynFlags (partial). |
|---|
| 3913 | Thomas Schilling <nominolo@googlemail.com>**20080914211718] |
|---|
| 3914 | [Haddockify 'IE'. |
|---|
| 3915 | Thomas Schilling <nominolo@googlemail.com>**20080914210016] |
|---|
| 3916 | [Provide accessors for 'ImportDecl'. |
|---|
| 3917 | Thomas Schilling <nominolo@googlemail.com>**20080914205811] |
|---|
| 3918 | [Start haddockifying 'HsBindLR'. |
|---|
| 3919 | Thomas Schilling <nominolo@googlemail.com>**20080914205629] |
|---|
| 3920 | [Document 'parseStaticFlags'. |
|---|
| 3921 | Thomas Schilling <nominolo@googlemail.com>**20080914205316] |
|---|
| 3922 | [Introduce 'GhcMonad' class and two default implementations 'Ghc' and 'GhcT'. |
|---|
| 3923 | Thomas Schilling <nominolo@googlemail.com>**20080914204930 |
|---|
| 3924 | |
|---|
| 3925 | This monad will be required by most public API calls. |
|---|
| 3926 | ] |
|---|
| 3927 | [Give the "Failing due to -Werror" message a name. |
|---|
| 3928 | Thomas Schilling <nominolo@googlemail.com>**20080914173904] |
|---|
| 3929 | [Make typechecker top-level functions also return messages instead of |
|---|
| 3930 | Thomas Schilling <nominolo@googlemail.com>**20080914173228 |
|---|
| 3931 | printing them. |
|---|
| 3932 | ] |
|---|
| 3933 | [Reflect changes of desugarer error reporting in VectMonad. |
|---|
| 3934 | Thomas Schilling <nominolo@googlemail.com>**20080914172711] |
|---|
| 3935 | [Generalise 'handleGhcException' to work with any 'ExceptionMonad'. |
|---|
| 3936 | Thomas Schilling <nominolo@googlemail.com>**20080914172404] |
|---|
| 3937 | [Introduce an 'ExceptionMonad' class. |
|---|
| 3938 | Thomas Schilling <nominolo@googlemail.com>**20080914172154 |
|---|
| 3939 | |
|---|
| 3940 | This monad provides variants of 'catch', 'bracket', and 'finally', so |
|---|
| 3941 | exceptions can be handled in monads that wrap IO. The latter two |
|---|
| 3942 | methods need to be part of the class definition, because GHC uses |
|---|
| 3943 | 'block' and 'unblock' which are used in the definition of those two |
|---|
| 3944 | methods for the IO monad. A perhaps better class interface would |
|---|
| 3945 | consist of 'gcatch', 'gblock', and 'gunblock' and let the latter two |
|---|
| 3946 | default to 'id' like is done for non-GHC implementations of 'bracket' |
|---|
| 3947 | and 'finally'. |
|---|
| 3948 | ] |
|---|
| 3949 | [Provide default MonadIO instance for IO. |
|---|
| 3950 | Thomas Schilling <nominolo@googlemail.com>**20080914164245] |
|---|
| 3951 | [Return instead of print warnings and errors in desugarer. |
|---|
| 3952 | Thomas Schilling <nominolo@googlemail.com>**20080914163641] |
|---|
| 3953 | [Return parser errors and warnings instead of dying. |
|---|
| 3954 | Thomas Schilling <nominolo@googlemail.com>**20080914162644] |
|---|
| 3955 | [Add aliases for bags of warnings and errors. |
|---|
| 3956 | Thomas Schilling <nominolo@googlemail.com>**20080914160337] |
|---|
| 3957 | [Slightly more helpful panic message in DynFlags |
|---|
| 3958 | Tim Chevalier <chevalier@alum.wellesley.edu>**20080915080650] |
|---|
| 3959 | [Comments only: ".core" => ".hcr" |
|---|
| 3960 | Tim Chevalier <chevalier@alum.wellesley.edu>**20080914203645] |
|---|
| 3961 | [We need to tell ghc-pkg to --force if we've only built a profiling library |
|---|
| 3962 | Ian Lynagh <igloo@earth.li>**20080913153142] |
|---|
| 3963 | [If we're profiling GHC, don't bother building the GHC package the vanilla way |
|---|
| 3964 | Ian Lynagh <igloo@earth.li>**20080913144820] |
|---|
| 3965 | [Remove the duplicate show rule in libraries/Makefile |
|---|
| 3966 | Ian Lynagh <igloo@earth.li>**20080913144413] |
|---|
| 3967 | [Move the "show" target from target.mk to boilerplate.mk |
|---|
| 3968 | Ian Lynagh <igloo@earth.li>**20080913141312 |
|---|
| 3969 | target.mk isn't included everywhere, but show is always handy |
|---|
| 3970 | ] |
|---|
| 3971 | [Change how we detect if we are using the bootstrapping compiler or not |
|---|
| 3972 | Ian Lynagh <igloo@earth.li>**20080913104658 |
|---|
| 3973 | I think looking for $(GHC_COMPILER_DIR_ABS) was failing on the Windows |
|---|
| 3974 | buildbot due to different path separators. Now we just look for |
|---|
| 3975 | "inplace". |
|---|
| 3976 | ] |
|---|
| 3977 | [wibble the distrib Makefile |
|---|
| 3978 | Ian Lynagh <igloo@earth.li>**20080912135932 |
|---|
| 3979 | We now need to install driver after ghc |
|---|
| 3980 | ] |
|---|
| 3981 | [Reinstate the driver/ghc directory, to create a versioned GHC program |
|---|
| 3982 | Ian Lynagh <igloo@earth.li>**20080912113619 |
|---|
| 3983 | e.g. $(bindir)/ghc-6.9.20080911 |
|---|
| 3984 | ] |
|---|
| 3985 | [If USE_NEW_MKDEPEND_FLAGS is YES then don't use the deprecated -optdep flags |
|---|
| 3986 | Ian Lynagh <igloo@earth.li>**20080912110316] |
|---|
| 3987 | [Use --force-local when calling tar in bindisttest/ |
|---|
| 3988 | Ian Lynagh <igloo@earth.li>**20080912012855 |
|---|
| 3989 | Otherwise it thinks that c:/foo is a remote file |
|---|
| 3990 | ] |
|---|
| 3991 | [Fix #2586, bug in THUNK_SELECTORs (again) |
|---|
| 3992 | Simon Marlow <marlowsd@gmail.com>**20080912130404 |
|---|
| 3993 | This time, we had forgetten the write barrier in one place. |
|---|
| 3994 | ] |
|---|
| 3995 | [TAG 2008-09-12 2 |
|---|
| 3996 | Ian Lynagh <igloo@earth.li>**20080912132848] |
|---|
| 3997 | Patch bundle hash: |
|---|
| 3998 | 2edb7312015996d469ded734914eefbdaf32c86d |
|---|