FunctionCallGraph 

FunctionCallSizeInfo 
Auxiliary data structure to hold function call summaries in terms
of information about number of function calls, consistent dimensions,
consistent sparsity, and dimensionpreserving functions.

InterProceduralAnalysis 
This Inter Procedural Analysis (IPA) serves two major purposes:
1) InterProcedure Analysis: propagate statistics from calling program into
functions and back into main program.

IPAPass 
Base class for all IPA passes.

IPAPassApplyStaticAndDynamicHopRewrites 
This rewrite applies static hop dag and statement block
rewrites such as constant folding and branch removal
in order to simplify statistic propagation.

IPAPassCompressionWorkloadAnalysis 
This rewrite obtains workload summaries for all hops candidates amenable for compression as a basis for
workloadaware compression planning.

IPAPassEliminateDeadCode 
This rewrite eliminates unnecessary subDAGs that produce
transient write outputs which are never consumed subsequently.

IPAPassFlagFunctionsRecompileOnce 
This rewrite marks functions with loops as recompile once
in order to reduce recompilation overhead.

IPAPassFlagLoopsRecompileOnce 
This rewrite marks loops in the main program as recompile once
in order to reduce recompilation overhead.

IPAPassFlagNonDeterminism 

IPAPassForwardFunctionCalls 
This rewrite forwards a function call to a function with a simple
function call that only consumes function parameters and literals
into the original call location.

IPAPassInlineFunctions 
This rewrite inlines single statement block functions, which have fewer
operations than an internal threshold.

IPAPassPropagateReplaceLiterals 
This rewrite propagates and replaces literals into functions
in order to enable subsequent rewrites such as branch removal.

IPAPassRemoveConstantBinaryOps 
This rewrite identifies binary operations with constant matrices
such as X * ones, where ones might be created as a vector of ones
before a loop.

IPAPassRemoveUnnecessaryCheckpoints 
This rewrite identifies and removes unnecessary checkpoints, i.e.,
persisting of Spark RDDs into a given storage level.

IPAPassRemoveUnusedFunctions 
This rewrite identifies and removes unused functions in order
to reduce compilation overhead and other overheads such as
parfor worker creation, where we construct function copies.

IPAPassReplaceEvalFunctionCalls 
This rewrite applies static hop dag and statement block
rewrites such as constant folding and branch removal
in order to simplify statistic propagation.

IPAPassRewriteFederatedPlan 
This rewrite generates a federated execution plan by estimating and setting costs and the FederatedOutput values of
all relevant hops in the DML program.
