summaryrefslogtreecommitdiff
path: root/compiler
Commit message (Collapse)AuthorAgeFilesLines
* Fix warningsbenl@ouroborus.net2010-10-132-2/+0
|
* RegAlloc: Track slot liveness over jumps in spill cleanerbenl@ouroborus.net2010-10-135-74/+196
|
* Remove __HASKELL1__, __HASKELL98__, __CONCURRENT_HASKELL__Ian Lynagh2010-10-121-8/+1
| | | | | | We used to define these CPP symbols, but nothing on hackage uses them and the first 2 are no longer correct (as we support multiple Haskell versions).
* Remove unnecessary importIan Lynagh2010-10-101-1/+0
|
* Fix build following haskell98 and -fglasgow-exts changesIan Lynagh2010-10-061-3/+2
|
* Don't automatically link the haskell98 packageIan Lynagh2010-10-064-12/+3
| | | | | The default language is now Haskell2010, so this was a little odd. Also, --make is now on by default, so this was largely irrelevant.
* Deprecate -fglasgow-extsIan Lynagh2010-10-061-2/+2
|
* Remove Opt_GADTs and Opt_TypeFamilies from -fglasgow-extsIan Lynagh2010-10-061-3/+1
| | | | This means most code doesn't get caught by monomorphic local bindings.
* Fix Trac #4360: omitted case in combineCtLocsimonpj@microsoft.com2010-10-082-15/+9
|
* Beautiful new approach to the skolem-escape check and untouchablesimonpj@microsoft.com2010-10-0812-89/+130
| | | | | | | | | | | | Instead of keeping a *set* of untouchable variables in each implication contraints, we keep a *range* of uniques for the *touchable* variables of an implication. This are precisely the ones we would call the "existentials" if we were French. It turns out that the code is more efficient, and vastly easier to get right, than the set-based approach. Fixes Trac #4355 among others
* Do less simplification when doing let-generalisationsimonpj@microsoft.com2010-10-081-23/+33
| | | | | | | | This fixes Trac #4361. In a rather delicate way, but no more delicate than before. A more remoseless typechecker would reject #4361 altogether. See Note [Avoid unecessary constraint simplification]
* Suppress ambiguity errors if any other errors occursimonpj@microsoft.com2010-10-081-4/+3
|
* Fix Trac #4361: be more discerning when inferring typessimonpj@microsoft.com2010-10-081-3/+41
| | | | Note [Avoid unecessary constraint simplification] in TcSimplify
* Float out partial applicationsSimon Marlow2010-10-083-22/+82
| | | | | | | | | | This fixes at least one case of performance regression in 7.0, and is nice win on nofib: Program Size Allocs Runtime Elapsed Min +0.3% -63.0% -38.5% -38.7% Max +1.2% +0.2% +0.9% +0.9% Geometric Mean +0.6% -3.0% -6.4% -6.6%
* Suppress knock-on typechecker errorssimonpj@microsoft.com2010-10-081-6/+17
| | | | | | The error cascade caused puzzling errors in T4093b, and suppressing some seems like a good plan. Very few test outputs change.
* Some refactoring and simplification in TcInteract.occurChecksimonpj@microsoft.com2010-10-077-53/+56
|
* Comments onlysimonpj@microsoft.com2010-10-071-12/+14
|
* Implement auto-specialisation of imported Idssimonpj@microsoft.com2010-10-0727-332/+557
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This big-ish patch arranges that if an Id 'f' is * Type-class overloaded f :: Ord a => [a] -> [a] * Defined with an INLINABLE pragma {-# INLINABLE f #-} * Exported from its defining module 'D' then in any module 'U' that imports D 1. Any call of 'f' at a fixed type will generate (a) a specialised version of f in U (b) a RULE that rewrites unspecialised calls to the specialised on e.g. if the call is (f Int dOrdInt xs) then the specialiser will generate $sfInt :: [Int] -> [Int] $sfInt = <code for f, imported from D, specialised> {-# RULE forall d. f Int d = $sfInt #-} 2. In addition, you can give an explicit {-# SPECIALISE -#} pragma for the imported Id {-# SPECIALISE f :: [Bool] -> [Bool] #-} This too generates a local specialised definition, and the corresponding RULE The new RULES are exported from module 'U', so that any module importing U will see the specialised versions of 'f', and will not re-specialise them. There's a flag -fwarn-auto-orphan that warns you if the auto-generated RULES are orphan rules. It's not in -Wall, mainly to avoid lots of error messages with existing packages. Main implementation changes - A new flag on a CoreRule to say if it was auto-generated. This is persisted across interface files, so there's a small change in interface file format. - Quite a bit of fiddling with plumbing, to get the {-# SPECIALISE #-} pragmas for imported Ids. In particular, a new field tgc_imp_specs in TcGblEnv, to keep the specialise pragmas for imported Ids between the typechecker and the desugarer. - Some new code (although surprisingly little) in Specialise, to deal with calls of imported Ids
* Make NameEnv back into type NameEnv a = UniqFM asimonpj@microsoft.com2010-10-071-24/+20
| | | | | | | | I don't think the type distinction of declaring NameEnv with a newtype (as it was) is really useful to us. Moreover, VarEnv is a UniqFM, and I do sometimes want to build an envt with Ids and look up with Names. This may not be the last word on the subject.
* Improve the rule-matchersimonpj@microsoft.com2010-10-072-19/+41
| | | | | | | | | | | | | | | Previously it was rejecting the match Template: forall s t. map s t Actual: map Int t which should obviously be fine. It turns out that this kind of match comes up when specialising. By freshening that t we could avoid the difficulty, but morally the (forall t) binds t and the rule should be alpha-equivalent regardless of the forall'd variables. This patch makes it so, and incidentally makes matching a little more efficient. See Note [Eta expansion] in VarEnv.
* Fix Trac #4345: simplifier bugsimonpj@microsoft.com2010-10-071-8/+25
| | | | | | | | | | This is another long-standing bug, in which there was a possibility that a loop-breaker could lose its loop-breaker-hood OccInfo, and then the simplifer re-simplified the expression. Result, either non-termination or, in the case of #4345, an unbound identifier. The fix is very simple, in Id.transferPolyIdInfo. See Note [transferPolyIdInfo].
* Avoid redundant simplification simonpj@microsoft.com2010-10-072-24/+58
| | | | | | | | | When adding specialisation for imported Ids, I noticed that the Glorious Simplifier was repeatedly (and fruitlessly) simplifying the same term. It turned out to be easy to fix this, because I already had a flag in the ApplyTo and Select constructors of SimplUtils.SimplCont. See Note [Avoid redundant simplification]
* Make the occurrence analyser deal correctly with RULES for imported Idssimonpj@microsoft.com2010-10-071-58/+148
| | | | | | | | | | This patch fixes a long-standing lurking bug, but it surfaced when I was adding specialisation for imported Ids. See Note [ImpRuleUsage], which explains the issue. The solution seems more complicated than the problem really deserves, but I could not think of a simpler way, so I just bit the bullet and wrote the code. Improvements welcome.
* Make warning-freesimonpj@microsoft.com2010-10-071-35/+14
|
* This is just white-space and layoutsimonpj@microsoft.com2010-10-071-18/+27
| | | | (At least, I don't think there is anything else.)
* Fix an ASSERT failure in FamInstEnvsimonpj@microsoft.com2010-10-071-21/+48
| | | | | I added a lot of comments too, to explain the preconditions; esp Note [FamInstEnv]
* Fix a looping bug in the new occur-check codesimonpj@microsoft.com2010-10-071-120/+118
|
* Fix test T4235 with -Osimonpj@microsoft.com2010-10-061-14/+10
| | | | | | The tag2Enum rule wasn't doing the right thing for enumerations with a phantom type parameter, like data T a = A | B
* Make warning-freesimonpj@microsoft.com2010-10-061-9/+13
|
* Major bugfixing pass through the type checkerdimitris@microsoft.com2010-10-066-208/+319
|
* Typechecker performance fixes and flatten skolem bugfixingdimitris@microsoft.com2010-10-046-125/+342
|
* Performance bug fixesdimitris@microsoft.com2010-09-232-15/+83
|
* Fix Trac #4371: matching of view patternssimonpj@microsoft.com2010-10-061-83/+94
|
* Remove unused NoMatchContext construtorsimonpj@microsoft.com2010-10-061-1/+0
|
* Refactoring: mainly rename ic_env_tvs to ic_untchsimonpj@microsoft.com2010-10-066-29/+29
| | | | Plus remember to zonk the free_tvs in TcUnify.newImplication
* remove unnecessary/broken definition of mask_Simon Marlow2010-10-021-5/+0
|
* -fwarn-tabs: add "Warning" to the messageSimon Marlow2010-10-021-1/+1
|
* Using 'stdcall' when it is not supported is only a warning now (#3336)Simon Marlow2010-09-242-2/+4
|
* Remove an unused import on WindowsIan Lynagh2010-09-291-3/+0
|
* Use showCommandForUser when showing tracing commandsIan Lynagh2010-09-281-2/+7
|
* Fix an egregious bug: INLINE pragmas on monomorphic Ids were being ignoredsimonpj@microsoft.com2010-09-245-228/+133
| | | | | | I had do to some refactoring to make this work nicely but now it does. I can't think how this escaped our attention for so long!
* Eta expand only lambdas that bind a non-dictionary Idsimonpj@microsoft.com2010-09-241-52/+32
| | | | | | See Note [When to eta expand]. The idea is that dictionary lambdas are invisible to the user, so we shouldn't eta expand them.
* Add a commentsimonpj@microsoft.com2010-09-241-0/+1
|
* Add a debug printsimonpj@microsoft.com2010-09-241-0/+1
|
* Just moving comments aroundsimonpj@microsoft.com2010-09-241-45/+76
|
* Change "OPTIONS" to "OPTIONS_GHC" in error messages; fixes #4327Ian Lynagh2010-09-241-2/+2
|
* emit a helpful error message for missing DPH packagesSimon Marlow2010-09-231-0/+9
|
* Fix braino in WwLib/Literal patchsimonpj@microsoft.com2010-09-241-1/+1
|
* Make -funfolding-dict-threshold work properlysimonpj@microsoft.com2010-09-232-1/+6
| | | | | and increase its default value. This makes overloaded functions a bit keener to inline. Which fixes Trac #4321
* Impredicative types is no longer deprecatedsimonpj@microsoft.com2010-09-231-2/+1
|