compiler/coreSyn¶
- compiler/coreSyn/CoreArity.hs
- Note [exprArity invariant]
- Note [Newtype classes and eta expansion]
- Note [exprArity for applications]
- Note [Definition of arity]
- Note [One-shot lambdas]
- Note [Dealing with bottom]
- 4. Note [Newtype arity]
- Note [The state-transformer hack]
- Note [State hack and bottoming functions]
- Note [ArityType]
- Note [Arity analysis]
- Note [Eta expanding through dictionaries]
- Note [Eta expanding thunks]
- Note [ABot branches: use max]
- Note [Combining case branches]
- Note [No crap in eta-expanded code]
- Note [Eta expansion for join points]
- Note [Eta expansion and SCCs]
- Note [Eta expansion and source notes]
- compiler/coreSyn/CoreFVs.hs
- compiler/coreSyn/CoreLint.hs
- Note [GHC Formalism]
- Note [check vs lint]
- Summary of checks
- Note [Linting function types]
- Note [Linting type lets]
- Note [Bad unsafe coercion]
- Note [Join points]
- Note [Linting Unfoldings from Interfaces]
- Note [Checking for INLINE loop breakers]
- Note [No alternatives lint check]
- Note [Beta redexes]
- Note [Stupid type synonyms]
- Note [Linting rules]
- Note [Rules for join points]
- Note [Checking for global Ids]
- Note [Checking StaticPtrs]
- Note [Type substitution]
- Note [Linting type synonym applications]
- compiler/coreSyn/CoreMap.hs
- compiler/coreSyn/CoreOpt.hs
- Note [The simple optimiser]
- Note [Exported Ids and trivial RHSs]
- Note [Preserve join-binding arity]
- Note [Inline prag in simplOpt]
- Note [Unfold compulsory unfoldings in LHSs]
- Note [Getting the map/coerce RULE to work]
- Note [Strictness and join points]
- Note [Unfolding DFuns]
- Note [DFun arity check]
- Note [exprIsLambda_maybe]
- Note [collectBindersPushingCo]
- compiler/coreSyn/CorePrep.hs
- Note [CorePrep invariants]
- Note [Floating out of top level bindings]
- Note [CafInfo and floating]
- Note [Join points and floating]
- Note [Data constructor workers]
- Note [Dead code in CorePrep]
- Note [Silly extra arguments]
- Note [Arity and join points]
- Note [runRW arg]
- Note [runRW magic]
- Note [ANF-ising literal string arguments]
- Note [Floating unlifted arguments]
- Note [Eta expansion]
- Note [Eta expansion and the CorePrep invariants]
- Note [Pin demand info on floats]
- Note [Inlining in CorePrep]
- Note [CorePrep inlines trivial CoreExpr not Id]
- Note [Drop unfoldings and rules]
- compiler/coreSyn/CoreSubst.hs
- compiler/coreSyn/CoreSyn.hs
- Note [Shadowing]
- Note [Literal alternatives]
- Note [Variable occurrences in Core]
- Note [CoreSyn letrec invariant]
- Note [CoreSyn top-level string literals]
- Note [Compilation plan for top-level string literals]
- Note [CoreSyn let/app invariant]
- Note [CoreSyn type and coercion invariant]
- Note [CoreSyn case invariants]
- Note [Levity polymorphism invariants]
- Note [CoreSyn let goal]
- Note [Type let]
- Note [Empty case alternatives]
- Note [Join points]
- Note [Invariants on join points]
- Note [The type of a join point]
- Note [The polymorphism rule of join points]
- Note [Orphans]
- Note [Historical note: unfoldings for wrappers]
- Note [DFun unfoldings]
- Note [Fragile unfoldings]
- Note [InlineStable]
- Note [OccInfo in unfoldings and rules]
- Note [CoreProgram]
- compiler/coreSyn/CoreTidy.hs
- compiler/coreSyn/CoreUnfold.hs
- Note [Top-level flag on inline rules]
- Note [Specialising unfoldings]
- Note [Honour INLINE on 0-ary bindings]
- Note [INLINE pragmas and boring contexts]
- Note [Occurrence analysis of unfoldings]
- Note [No binder swap in unfoldings]
- Note [Calculate unfolding guidance on the non-occ-anal’d expression]
- Note [Computing the size of an expression]
- Note [Do not inline top-level bottoming functions]
- Note [INLINE for small functions]
- Note [Constructor size and result discount]
- Note [Unboxed tuple size and result discount]
- Note [Function and non-function discounts]
- Note [Literal integer size]
- Note [addAltSize result discounts]
- Note [Discounts and thresholds]
- Note [Function applications]
- Note [certainlyWillInline: be careful of thunks]
- Note [certainlyWillInline: INLINABLE]
- Note [Unfold into lazy contexts], Note [RHS of lets]
- Note [Unsaturated applications]
- Note [Things to watch]
- Note [Inlining an InlineRule]
- Note [Nested functions]
- Note [Cast then apply]
- Note [Inlining in ArgCtxt]
- Note [Interaction of exprIsWorkFree and lone variables]
- compiler/coreSyn/CoreUtils.hs
- Note [Type bindings]
- Note [Existential variables and silly type synonyms]
- Note [Binding coercions]
- Note [Unreachable code]
- Note [Combine identical alternatives]
- Note [Care with impossible-constructors when combining alternatives]
- Note [getIdFromTrivialExpr]
- Note [Bottoming expressions]
- Note [exprIsDupable]
- Note [exprIsWorkFree]
- Note [Case expressions are work-free]
- Note [exprIsCheap and exprIsHNF]
- Note [Arguments and let-bindings exprIsCheapX]
- Note [exprIsExpandable]
- Note [isCheapApp: bottoming functions]
- Note [isExpandableApp: bottoming functions]
- Note [Record selection]
- Note [Expandable overloadings]
- Note [exprOkForSpeculation: case expressions]
- Note [Primops with lifted arguments]
- Note [exprOkForSpeculation and SeqOp/DataToTagOp]
- Note [exprOkForSpeculation and evaluated variables]
- Note [exprIsHNF] See also Note [exprIsCheap and exprIsHNF]
- Note [Mark evaluated arguments]
- Note [Eta reduction conditions]
- Note [Eta reduction with casted arguments]
- Note [Eta reduction of an eval’d function]
- compiler/coreSyn/MkCore.hs
- compiler/coreSyn/PprCore.hs