Alias analysis

Alias analysis is a technique in compiler theory, used to determine if a storage location may be accessed in more than one way.Alias analysers intend to make and compute useful information for understanding aliasing in programs.For the discussion here, it is assumed that the optimizations done here occur on a low-level intermediate representation of the program.If the language being compiled is type safe, the compiler's type checker is correct, and the language lacks the ability to create pointers referencing local variables, (such as ML, Haskell, or Java) then some useful optimizations can be made.Analysis based on flow, can be applied to programs in a language with references or type-casting.In flow based analysis, new alias classes are created for each memory allocation, and for every global and local variable whose address has been used.
compiler theoryaliasedpoints-to analysisthreadmemory modelto be not immediately visiblesynchronization constructsintermediate representationtype safeHaskellEscape analysisPointer analysisShape analysisCompiler optimizationsPeephole optimizationLocal value numberingLoop nest optimizationLoop splittingLoop unrollingLoop unswitchingSoftware pipeliningStrength reductionData-flowanalysisAvailable expressionCommon subexpression eliminationConstant foldingDead storeInduction variable recognition and eliminationLive-variable analysisUpwards exposed usesUse-define chainReaching definitionsGlobal value numberingSparse conditional constant propagationCode generationInstruction schedulingInstruction selectionRegister allocationRematerializationDeforestationTail-call eliminationInterprocedural optimizationBounds-checking eliminationCompile-time function executionDead-code eliminationExpression templatesInline expansionJump threadingPartial evaluationProfile-guided optimizationArray-access analysisControl-flow analysisData-flow analysisDependence analysisValue range analysis