LLVM  14.0.0git
Classes | Macros | Functions | Variables
StackSafetyAnalysis.cpp File Reference
#include "llvm/Analysis/StackSafetyAnalysis.h"
#include "llvm/ADT/APInt.h"
#include "llvm/ADT/SmallPtrSet.h"
#include "llvm/ADT/SmallVector.h"
#include "llvm/ADT/Statistic.h"
#include "llvm/Analysis/ModuleSummaryAnalysis.h"
#include "llvm/Analysis/ScalarEvolutionExpressions.h"
#include "llvm/Analysis/StackLifetime.h"
#include "llvm/IR/ConstantRange.h"
#include "llvm/IR/DerivedTypes.h"
#include "llvm/IR/GlobalValue.h"
#include "llvm/IR/InstIterator.h"
#include "llvm/IR/Instructions.h"
#include "llvm/IR/IntrinsicInst.h"
#include "llvm/IR/ModuleSummaryIndex.h"
#include "llvm/InitializePasses.h"
#include "llvm/Support/Casting.h"
#include "llvm/Support/CommandLine.h"
#include "llvm/Support/FormatVariadic.h"
#include "llvm/Support/raw_ostream.h"
#include <algorithm>
#include <memory>
#include <tuple>
Include dependency graph for StackSafetyAnalysis.cpp:

Go to the source code of this file.

Classes

struct  llvm::StackSafetyInfo::InfoTy
 
struct  llvm::StackSafetyGlobalInfo::InfoTy
 

Macros

#define DEBUG_TYPE   "stack-safety"
 

Functions

 STATISTIC (NumAllocaStackSafe, "Number of safe allocas")
 
 STATISTIC (NumAllocaTotal, "Number of total allocas")
 
 STATISTIC (NumCombinedCalleeLookupTotal, "Number of total callee lookups on combined index.")
 
 STATISTIC (NumCombinedCalleeLookupFailed, "Number of failed callee lookups on combined index.")
 
 STATISTIC (NumModuleCalleeLookupTotal, "Number of total callee lookups on module index.")
 
 STATISTIC (NumModuleCalleeLookupFailed, "Number of failed callee lookups on module index.")
 
 STATISTIC (NumCombinedParamAccessesBefore, "Number of total param accesses before generateParamAccessSummary.")
 
 STATISTIC (NumCombinedParamAccessesAfter, "Number of total param accesses after generateParamAccessSummary.")
 
 STATISTIC (NumCombinedDataFlowNodes, "Number of total nodes in combined index for dataflow processing.")
 
 STATISTIC (NumIndexCalleeUnhandled, "Number of index callee which are unhandled.")
 
 STATISTIC (NumIndexCalleeMultipleWeak, "Number of index callee non-unique weak.")
 
 STATISTIC (NumIndexCalleeMultipleExternal, "Number of index callee non-unique external.")
 
 INITIALIZE_PASS_BEGIN (StackSafetyInfoWrapperPass, LocalPassArg, LocalPassName, false, true) INITIALIZE_PASS_END(StackSafetyInfoWrapperPass
 
 INITIALIZE_PASS_BEGIN (StackSafetyGlobalInfoWrapperPass, DEBUG_TYPE, GlobalPassName, false, true) INITIALIZE_PASS_END(StackSafetyGlobalInfoWrapperPass
 

Variables

static cl::opt< intStackSafetyMaxIterations ("stack-safety-max-iterations", cl::init(20), cl::Hidden)
 
static cl::opt< bool > StackSafetyPrint ("stack-safety-print", cl::init(false), cl::Hidden)
 
static cl::opt< bool > StackSafetyRun ("stack-safety-run", cl::init(false), cl::Hidden)
 
static const char LocalPassArg [] = "stack-safety-local"
 
static const char LocalPassName [] = "Stack Safety Local Analysis"
 
 false
 
static const true char GlobalPassName [] = "Stack Safety Analysis"
 
 DEBUG_TYPE
 

Macro Definition Documentation

◆ DEBUG_TYPE

#define DEBUG_TYPE   "stack-safety"

Definition at line 37 of file StackSafetyAnalysis.cpp.

Function Documentation

◆ INITIALIZE_PASS_BEGIN() [1/2]

INITIALIZE_PASS_BEGIN ( StackSafetyGlobalInfoWrapperPass  ,
DEBUG_TYPE  ,
GlobalPassName  ,
false  ,
true   
)

◆ INITIALIZE_PASS_BEGIN() [2/2]

INITIALIZE_PASS_BEGIN ( StackSafetyInfoWrapperPass  ,
LocalPassArg  ,
LocalPassName  ,
false  ,
true   
)

◆ STATISTIC() [1/12]

STATISTIC ( NumAllocaStackSafe  ,
"Number of safe allocas"   
)

◆ STATISTIC() [2/12]

STATISTIC ( NumAllocaTotal  ,
"Number of total allocas"   
)

◆ STATISTIC() [3/12]

STATISTIC ( NumCombinedCalleeLookupFailed  ,
"Number of failed callee lookups on combined index."   
)

◆ STATISTIC() [4/12]

STATISTIC ( NumCombinedCalleeLookupTotal  ,
"Number of total callee lookups on combined index."   
)

◆ STATISTIC() [5/12]

STATISTIC ( NumCombinedDataFlowNodes  ,
"Number of total nodes in combined index for dataflow processing."   
)

◆ STATISTIC() [6/12]

STATISTIC ( NumCombinedParamAccessesAfter  ,
"Number of total param accesses after generateParamAccessSummary."   
)

◆ STATISTIC() [7/12]

STATISTIC ( NumCombinedParamAccessesBefore  ,
"Number of total param accesses before generateParamAccessSummary."   
)

◆ STATISTIC() [8/12]

STATISTIC ( NumIndexCalleeMultipleExternal  ,
"Number of index callee non-unique external."   
)

◆ STATISTIC() [9/12]

STATISTIC ( NumIndexCalleeMultipleWeak  ,
"Number of index callee non-unique weak."   
)

◆ STATISTIC() [10/12]

STATISTIC ( NumIndexCalleeUnhandled  ,
"Number of index callee which are unhandled."   
)

◆ STATISTIC() [11/12]

STATISTIC ( NumModuleCalleeLookupFailed  ,
"Number of failed callee lookups on module index."   
)

◆ STATISTIC() [12/12]

STATISTIC ( NumModuleCalleeLookupTotal  ,
"Number of total callee lookups on module index."   
)

Variable Documentation

◆ DEBUG_TYPE

DEBUG_TYPE

Definition at line 1131 of file StackSafetyAnalysis.cpp.

◆ false

false

Definition at line 1124 of file StackSafetyAnalysis.cpp.

◆ GlobalPassName

GlobalPassName = "Stack Safety Analysis"
static

Definition at line 1126 of file StackSafetyAnalysis.cpp.

◆ LocalPassArg

LocalPassArg = "stack-safety-local"
static

Definition at line 1118 of file StackSafetyAnalysis.cpp.

◆ LocalPassName

LocalPassName = "Stack Safety Local Analysis"
static

Definition at line 1119 of file StackSafetyAnalysis.cpp.

◆ StackSafetyMaxIterations

cl::opt<int> StackSafetyMaxIterations("stack-safety-max-iterations", cl::init(20), cl::Hidden)
static

◆ StackSafetyPrint

cl::opt<bool> StackSafetyPrint("stack-safety-print", cl::init(false), cl::Hidden)
static

◆ StackSafetyRun

cl::opt<bool> StackSafetyRun("stack-safety-run", cl::init(false), cl::Hidden)
static