[sil-analysis] Add a new utility class for FunctionBaseInfo based analyses: LazyFunctionInfo.
[sil-analysis] Add a new utility class for FunctionBaseInfo based analyses: LazyFunctionInfo.

Commonly when an analysis uses subanalyses, we eagerly create the sub function
info when constructing the main function info. This is not always necessary and
when the subanalyses do work in their constructor, can be actively harmful if
the parent analysis is never invoked.

This utility class solves this problem by being a very easy way to perform a
delayed call to the sub-analysis to get the sub-functioninfo combined with a
cache so that after the LazyFunctionInfo is used once, we do not reuse the
DenseMap in the sub-analysis unnecessarily.

An example of where this can happen is in EpilogueARCAnalysis in combination
with PostOrderFunctionInfo. PostOrderFunctionInfo eagerly creates a new post
order. So, if we were to eagerly create the PostOrderFunctionInfo (the
sub-functioninfo) when we created an EpilogueARCFunctionInfo, we would be
creating a post order even if we never actually invoke EpilogueARCFunctionInfo.

ahoppen/swift,natecook1000/swift,xwu/swift,brentdax/swift,devincoughlin/swift,hooman/swift,jmgc/swift,practicalswift/swift,xedin/swift,sschiau/swift,return/swift,CodaFi/swift,xedin/swift,huonw/swift,harlanhaskins/swift,frootloops/swift,airspeedswift/swift,devincoughlin/swift,devincoughlin/swift,xwu/swift,roambotics/swift,jmgc/swift,JGiola/swift,natecook1000/swift,parkera/swift,jopamer/swift,parkera/swift,alblue/swift,rudkx/swift,devincoughlin/swift,milseman/swift,austinzheng/swift,uasys/swift,hooman/swift,zisko/swift,ahoppen/swift,return/swift,lorentey/swift,aschwaighofer/swift,devincoughlin/swift,gribozavr/swift,glessard/swift,rudkx/swift,milseman/swift,brentdax/swift,nathawes/swift,stephentyrone/swift,OscarSwanros/swift,roambotics/swift,deyton/swift,shahmishal/swift,zisko/swift,OscarSwanros/swift,roambotics/swift,allevato/swift,return/swift,nathawes/swift,CodaFi/swift,devincoughlin/swift,allevato/swift,gregomni/swift,benlangmuir/swift,natecook1000/swift,milseman/swift,tkremenek/swift,jopamer/swift,apple/swift,stephentyrone/swift,natecook1000/swift,uasys/swift,ahoppen/swift,aschwaighofer/swift,jckarter/swift,deyton/swift,swiftix/swift,gregomni/swift,deyton/swift,atrick/swift,aschwaighofer/swift,zisko/swift,alblue/swift,alblue/swift,swiftix/swift,nathawes/swift,practicalswift/swift,nathawes/swift,glessard/swift,parkera/swift,JGiola/swift,uasys/swift,xwu/swift,allevato/swift,lorentey/swift,deyton/swift,frootloops/swift,xwu/swift,benlangmuir/swift,shahmishal/swift,glessard/swift,xedin/swift,OscarSwanros/swift,airspeedswift/swift,practicalswift/swift,roambotics/swift,jmgc/swift,allevato/swift,apple/swift,huonw/swift,danielmartin/swift,xwu/swift,alblue/swift,gregomni/swift,return/swift,apple/swift,amraboelela/swift,xedin/swift,natecook1000/swift,hooman/swift,benlangmuir/swift,karwa/swift,amraboelela/swift,shahmishal/swift,tjw/swift,shahmishal/swift,devincoughlin/swift,glessard/swift,austinzheng/swift,jmgc/swift,glessard/swift,parkera/swift,zisko/swift,atrick/swift,gribozavr/swift,gribozavr/swift,brentdax/swift,deyton/swift,zisko/swift,xwu/swift,harlanhaskins/swift,lorentey/swift,shahmishal/swift,sschiau/swift,shajrawi/swift,jopamer/swift,brentdax/swift,danielmartin/swift,gregomni/swift,frootloops/swift,hooman/swift,gribozavr/swift,CodaFi/swift,danielmartin/swift,jckarter/swift,shajrawi/swift,gribozavr/swift,lorentey/swift,austinzheng/swift,jckarter/swift,brentdax/swift,OscarSwanros/swift,karwa/swift,lorentey/swift,return/swift,karwa/swift,atrick/swift,jckarter/swift,xedin/swift,gribozavr/swift,tjw/swift,shajrawi/swift,karwa/swift,practicalswift/swift,shahmishal/swift,benlangmuir/swift,OscarSwanros/swift,shahmishal/swift,jckarter/swift,devincoughlin/swift,gribozavr/swift,jopamer/swift,allevato/swift,uasys/swift,harlanhaskins/swift,danielmartin/swift,CodaFi/swift,stephentyrone/swift,CodaFi/swift,amraboelela/swift,frootloops/swift,brentdax/swift,natecook1000/swift,rudkx/swift,swiftix/swift,benlangmuir/swift,hooman/swift,gregomni/swift,ahoppen/swift,practicalswift/swift,karwa/swift,tkremenek/swift,harlanhaskins/swift,gregomni/swift,swiftix/swift,shajrawi/swift,huonw/swift,jmgc/swift,swiftix/swift,milseman/swift,JGiola/swift,stephentyrone/swift,milseman/swift,xwu/swift,atrick/swift,karwa/swift,stephentyrone/swift,atrick/swift,apple/swift,uasys/swift,austinzheng/swift,parkera/swift,gribozavr/swift,JGiola/swift,amraboelela/swift,aschwaighofer/swift,stephentyrone/swift,brentdax/swift,benlangmuir/swift,lorentey/swift,tkremenek/swift,tkremenek/swift,tjw/swift,danielmartin/swift,zisko/swift,shajrawi/swift,return/swift,practicalswift/swift,amraboelela/swift,airspeedswift/swift,tkremenek/swift,deyton/swift,practicalswift/swift,lorentey/swift,airspeedswift/swift,xedin/swift,jckarter/swift,austinzheng/swift,sschiau/swift,sschiau/swift,tkremenek/swift,tjw/swift,jmgc/swift,airspeedswift/swift,sschiau/swift,harlanhaskins/swift,shahmishal/swift,ahoppen/swift,uasys/swift,shajrawi/swift,jckarter/swift,frootloops/swift,return/swift,parkera/swift,harlanhaskins/swift,huonw/swift,huonw/swift,glessard/swift,rudkx/swift,ahoppen/swift,swiftix/swift,tkremenek/swift,frootloops/swift,milseman/swift,karwa/swift,shajrawi/swift,apple/swift,huonw/swift,aschwaighofer/swift,aschwaighofer/swift,apple/swift,allevato/swift,stephentyrone/swift,swiftix/swift,CodaFi/swift,airspeedswift/swift,JGiola/swift,uasys/swift,karwa/swift,sschiau/swift,roambotics/swift,JGiola/swift,tjw/swift,shajrawi/swift,milseman/swift,alblue/swift,nathawes/swift,xedin/swift,hooman/swift,frootloops/swift,jopamer/swift,amraboelela/swift,danielmartin/swift,jmgc/swift,airspeedswift/swift,aschwaighofer/swift,parkera/swift,huonw/swift,practicalswift/swift,CodaFi/swift,tjw/swift,zisko/swift,rudkx/swift,nathawes/swift,austinzheng/swift,danielmartin/swift,austinzheng/swift,tjw/swift,alblue/swift,natecook1000/swift,sschiau/swift,parkera/swift,jopamer/swift,harlanhaskins/swift,roambotics/swift,deyton/swift,alblue/swift,jopamer/swift,amraboelela/swift,OscarSwanros/swift,rudkx/swift,hooman/swift,sschiau/swift,OscarSwanros/swift,lorentey/swift,xedin/swift,allevato/swift,atrick/swift,nathawes/swift