LLVM API Documentation

GlobalsModRef.cpp File Reference

#include "llvm/Analysis/Passes.h"
#include "llvm/Module.h"
#include "llvm/Pass.h"
#include "llvm/Instructions.h"
#include "llvm/Constants.h"
#include "llvm/Analysis/AliasAnalysis.h"
#include "llvm/Analysis/CallGraph.h"
#include "llvm/Support/InstIterator.h"
#include "llvm/Support/CommandLine.h"
#include "llvm/ADT/Statistic.h"
#include "llvm/ADT/SCCIterator.h"
#include <set>

Include dependency graph for GlobalsModRef.cpp:

Go to the source code of this file.

Functions

Passllvm::createGlobalsModRefPass ()
static const GlobalValuegetUnderlyingObject (const Value *V)

Variables

Statistic NumNonAddrTakenGlobalVars ("globalsmodref-aa","Number of global vars without address taken")
Statistic NumNonAddrTakenFunctions ("globalsmodref-aa","Number of functions without address taken")
Statistic NumNoMemFunctions ("globalsmodref-aa","Number of functions that do not access memory")
Statistic NumReadMemFunctions ("globalsmodref-aa","Number of functions that only read memory")
std::map< GlobalValue *, unsigned > GlobalInfo
unsigned FunctionEffect
std::set< GlobalValue * > NonAddressTakenGlobals
std::map< Function *, FunctionRecord > FunctionInfo
RegisterOpt< GlobalsModRef > X ("globalsmodref-aa","Simple mod/ref analysis for globals")
RegisterAnalysisGroup< AliasAnalysis,
GlobalsModRef > 
Y


Function Documentation

static const GlobalValue* getUnderlyingObject ( const Value V  )  [static]

getUnderlyingObject - This traverses the use chain to figure out what object the specified value points to. If the value points to, or is derived from, a global object, return it.

Definition at line 334 of file GlobalsModRef.cpp.

References getUnderlyingObject(), GV, and V.


Variable Documentation

unsigned FunctionEffect

FunctionEffect - Capture whether or not this function reads or writes to ANY memory. If not, we can do a lot of aggressive analysis on it.

Definition at line 64 of file GlobalsModRef.cpp.

std::map<Function*, FunctionRecord> FunctionInfo

FunctionInfo - For each function, keep track of what globals are modified or read.

Definition at line 77 of file GlobalsModRef.cpp.

std::map<GlobalValue*, unsigned> GlobalInfo

GlobalInfo - Maintain mod/ref info for all of the globals without addresses taken that are read or written (transitively) by this function.

Definition at line 53 of file GlobalsModRef.cpp.

std::set<GlobalValue*> NonAddressTakenGlobals

NonAddressTakenGlobals - The globals that do not have their addresses taken.

Definition at line 73 of file GlobalsModRef.cpp.

Statistic NumNoMemFunctions("globalsmodref-aa","Number of functions that do not access memory") [static]

Statistic NumNonAddrTakenFunctions("globalsmodref-aa","Number of functions without address taken") [static]

Statistic NumNonAddrTakenGlobalVars("globalsmodref-aa","Number of global vars without address taken") [static]

Statistic NumReadMemFunctions("globalsmodref-aa","Number of functions that only read memory") [static]

RegisterOpt<GlobalsModRef> X("globalsmodref-aa","Simple mod/ref analysis for globals") [static]

RegisterAnalysisGroup<AliasAnalysis, GlobalsModRef> Y [static]

Definition at line 140 of file GlobalsModRef.cpp.