compiler/simplCore¶
- compiler/simplCore/CSE.hs
- Note [Shadowing]
- Note [CSE for bindings]
- Note [CSE for case expressions]
- Note [CSE for INLINE and NOINLINE]
- Note [CSE for stable unfoldings]
- Note [Corner case for case expressions]
- Note [CSE for join points?]
- Note [Look inside join-point binders]
- Note [CSE for recursive bindings]
- Note [Take care with literal strings]
- Note [Delay inlining after CSE]
- Note [Combine case alternatives]
- compiler/simplCore/CallArity.hs
- Note [Call Arity: The goal]
- Note [Analysis I: The arity analysis]
- Note [Analysis II: The Co-Called analysis]
- Note [Analysis type signature]
- Note [Which variables are interesting]
- Note [Taking boring variables into account]
- Note [Recursion and fixpointing]
- Note [Thunks in recursive groups]
- Note [Analysing top-level binds]
- Note [Trimming arity]
- Note [What is a thunk]
- Note [Call Arity and Join Points]
- compiler/simplCore/CoreMonad.hs
- compiler/simplCore/Exitify.hs
- compiler/simplCore/FloatIn.hs
- Note [Dead bindings]
- Note [Do not destroy the let/app invariant]
- Note [Join points]
- Note [Floating in past a lambda group]
- Note [Floating coercions]
- Note [extra_fvs (1): avoid floating into RHS]
- Note [extra_fvs (2): free variables of rules]
- Note [Floating primops]
- Note [noFloatInto considerations]
- Note [Duplicating floats]
- compiler/simplCore/FloatOut.hs
- compiler/simplCore/LiberateCase.hs
- compiler/simplCore/OccurAnal.hs
- Note [Plugin rules]
- Note [Recursive bindings: the grand plan]
- Note [Dead code]
- Note [Forming Rec groups]
- Note [Choosing loop breakers]
- Note [Rules for imported functions]
- Note [Preventing loops due to imported functions rules]
- Note [Specialising imported functions] (referred to from Specialise)
- Note [Glomming]
- Note [Inline rules]
- Example [eftInt]
- Note [Specialisation rules]
- Note [Finding join points]
- Note [Rules and join points]
- Note [Adjusting right-hand sides]
- Note [Unfoldings and join points]
- Note [Complexity of loop breaking]
- Note [Loop breakers and INLINE/INLINABLE pragmas]
- Note [DFuns should not be loop breakers]
- Note [Constructor applications]
- Note [Closure conversion]
- Note [Self-recursion and loop breakers]
- Note [Loop breakers, node scoring, and stability]
- Note [Join point RHSs]
- Note [Cascading inlines]
- Note [Gather occurrences of coercion variables]
- Note [Arguments of let-bound constructors]
- Note [Sources of one-shot information]
- Note [OneShots]
- Note [Binders in case alternatives]
- Note [Binder swap]
- Note [Case of cast]
- Note [Binder swap on GlobalId scrutinees]
- Note [Zap case binders in proxy bindings]
- Historical note [no-case-of-case]
- Historical note [Suppressing the case binder-swap]
- Note [UsageDetails and zapping]
- Note [Do not mark CoVars as dead]
- Note [Join points and INLINE pragmas]
- compiler/simplCore/SAT.hs
- compiler/simplCore/SetLevels.hs
- Note [FloatOut inside INLINE]
- Note [Join ceiling]
- Note [Floating over-saturated applications]
- Note [Floating single-alternative cases]
- Note [Check the output scrutinee for exprIsHNF]
- Note [Floating to the top]
- Note [Floating join point bindings]
- Note [Free join points]
- Note [Floating MFEs of unlifted type]
- Note [Test cheapness with exprOkForSpeculation]
- Note [Bottoming floats]
- Note [Bottoming floats: eta expansion] c.f Note [Bottoming floats]
- Note [Case MFEs]
- Note [Floating literals]
- Note [Escaping a value lambda]
- Note [Floating from a RHS]
- Note [Floating and kind casts]
- Note [le_subst and le_env]
- Note [Zapping the demand info]
- compiler/simplCore/SimplCore.hs
- compiler/simplCore/SimplEnv.hs
- compiler/simplCore/SimplUtils.hs
- Note [StaticEnv invariant]
- Note [DupFlag invariants]
- Note [The hole type in ApplyToTy]
- Note [Do not expose strictness if sm_inline=False]
- Note [Interesting call context]
- Note [No case of case is boring]
- Note [Interesting arguments]
- Note [Conlike is interesting]
- Note [Simplifying rules]
- Note [No eta expansion in stable unfoldings]
- Note [Inlining in gentle mode]
- Note [Simplifying inside stable unfoldings]
- A note about wrappers
- Note [pre/postInlineUnconditionally in gentle mode]
- Note [Stable unfoldings and preInlineUnconditionally]
- Note [Top-level bottoming Ids]
- Note [Do not inline CoVars unconditionally]
- Note [Top level and postInlineUnconditionally]
- Note [Stable unfoldings and postInlineUnconditionally]
- Note [Eta expanding lambdas]
- Note [Casts and lambdas]
- Note [Eta-expanding at let bindings]
- Note [Do not eta-expand join points]
- Note [Do not eta-expand PAPs]
- Note [Floating and type abstraction]
- Note [Which type variables to abstract over]
- Note [Abstract over coercions]
- Note [Merge Nested Cases]
- Note [Eliminate Identity Case]
- Note [Scrutinee Constant Folding]
- Note [Literal cases]
- Note [Dead binders]
- Note [Cascading case merge]
- compiler/simplCore/Simplify.hs
- Note [The big picture]
- Note [Shadowing]
- Eta expansion
- Note [Float coercions]
- Note [Preserve strictness when floating coercions]
- Note [Float coercions (unlifted)]
- Note [Trivial after prepareRhs]
- Note [Cannot trivialise]
- Note [Arity decrease]
- Note [Bottoming bindings]
- Note [Setting the demand info]
- Note [Avoiding space leaks in OutType]
- Note [Optimising reflexivity]
- Note [Avoiding exponential behaviour]
- Note [Zap unfolding when beta-reducing]
- Note [Rules and unfolding for join points]
- Note [Join points and case-of-case]
- Note [Join points wih -fno-case-of-case]
- Note [Trying rewrite rules]
- Note [RULES apply to simplified arguments]
- Note [Avoid redundant simplification]
- Note [Shadowing]
- Note [User-defined RULES for seq]
- Note [Occurrence-analyse after rule firing]
- Note [Optimising tagToEnum#]
- Note [Rules for recursive functions]
- Note [Case elimination]
- Note [Case to let transformation]
- Note [Case-to-let for strictly-used binders]
- Further notes about case elimination
- Note [FloatBinds from constructor wrappers]
- Note [knownCon occ info]
- Note [Case alternative occ info]
- Note [Improving seq]
- Note [Adding evaluatedness info to pattern-bound variables]
- Note [Case binder evaluated-ness]
- Note [Add unfolding for scrutinee]
- Note [Bottom alternatives]
- Note [Fusing case continuations]
- Note [Case binders and join points]
- Note [Duplicated env]
- Note [Small alternative rhs]
- Note [Funky mkLamTypes]
- Note [Duplicating StrictArg]
- Note [Duplicating StrictBind]
- Note [Join point abstraction] Historical note
- Note [Force bottoming field]
- Note [Setting the new unfolding]
- Note [Rules in a letrec]