compiler/specialiseΒΆ
- compiler/specialise/Rules.hs
- Note [Overall plumbing for rules]
- Note [Care with roughTopName]
- Note [Where rules are found]
- Note [Extra args in rule matching]
- Note [Unbound RULE binders]
- Note [Cloning the template binders]
- Note [Expanding variables]
- Note [Do not expand locally-bound variables]
- Note [Tick annotations in RULE matching]
- Note [Matching lets]
- Note [Matching cases]
- Note [Lookup in-scope]
- compiler/specialise/SpecConstr.hs
- Note [Reboxing]
- Note [Good arguments]
- What to abstract over
- Note [Shadowing]
- Note [Specialising for constant parameters]
- Note [Specialising for lambda parameters]
- Note [SpecConstr for casts]
- Note [Local recursive groups]
- Note [Seeding top-level recursive groups]
- Note [Top-level recursive groups]
- Note [Do not specialise diverging functions]
- Note [Forcing specialisation]
- Alternatives to ForceSpecConstr
- Note [Limit recursive specialisation]
- Note [NoSpecConstr]
- Example 1
- Example 2
- Note [Work-free values only in environment]
- Note [Making SpecConstr keener]
- Note [Add scrutinee to ValueEnv too]
- Note [Avoiding exponential blowup]
- Note [Local let bindings]
- Note [spec_usg includes rhs_usg]
- Note [Specialise original body]
- Note [Transfer activation]
- Note [Transfer strictness]
- Note [Strictness information in worker binders]
- Note [Free type variables of the qvar types]
- Note [SpecConstr call patterns]
- Note [Choosing patterns]
- Note [SpecConstr and casts]
- Note [Ignore type differences]
- compiler/specialise/Specialise.hs
- Note [Wrap bindings returned by specImports]
- Note [Disabling cross-module specialisation]
- Note [Warning about missed specialisations]
- Note [Specialise imported INLINABLE things]
- Note [Glom the bindings if imported functions are specialised]
- Note [Avoiding recursive specialisation]
- Note [Floating dictionaries out of cases]
- Note [Account for casts in binding]
- Note [Evidence foralls]
- Note [Orphans and auto-generated rules]
- Note [Make the new dictionaries interesting]
- Note [From non-recursive to recursive]
- Note [Avoiding loops]
- Note [Specialising a recursive group]
- Note [Specialisations already covered]
- Note [Auto-specialisation and RULES]
- Note [Specialisation shape]
- Note [Inline specialisations]
- Note [Floated dictionary bindings]
- Note [Type determines value]
- Note [Interesting dictionary arguments]