public class IPPointsToAnalysis extends IPAnalysis
| Modifier and Type | Class and Description |
|---|---|
static class |
IPPointsToAnalysis.AbstractLocation
AbstractLocation represents a abstract location that is not referenced to
in terms of a program variable.
|
| Modifier and Type | Field and Description |
|---|---|
static java.util.Set<Symbol> |
return_vars |
| Constructor and Description |
|---|
IPPointsToAnalysis(Program program)
Constructs a new interprocedural points-to analyzer.
|
| Modifier and Type | Method and Description |
|---|---|
void |
analyzeProcedure(IPANode node)
Invokes intraprocedural analysis.
|
static void |
clearPointsToRelations()
Invalidates the analysis result.
|
static boolean |
containsUniverse()
Checks if the current points-to analysis result contains
points-to-universe relation.
|
static Domain |
getPointsToRelations(Statement stmt)
Returns points-to relations for the given statement.
|
static java.util.Set<PointsToRel> |
getReturnRelations(CallSite callsite)
Returns the set of points-to relations pointed by the return value of
the specified function call.
|
static boolean |
isSafeLibraryCall(FunctionCall fcall)
Checks if the given function call is known for having no side effects on
the "points-to relation" (not on memory).
|
void |
start()
Starts interprocedural points-to analysis.
|
boolean |
updateCall(IPANode node)
Not used.
|
java.util.Set<CallSite> |
updateCalls(IPANode node)
Updates the forward information for each call site by performing mapping,
and by maintaining map-info for each different single-depth context.
|
static void |
updatePointsToRelations(Program program)
Recompute the static points-to relations for the given program.
|
boolean |
updateReturn(IPANode node)
Updates the backward information available at the exit of a procedure by
performing unmapping.
|
getPassNamerunpublic static final java.util.Set<Symbol> return_vars
public IPPointsToAnalysis(Program program)
program - the input program.public static Domain getPointsToRelations(Statement stmt)
stmt - the statement before which points-to relations are computed.public static void clearPointsToRelations()
public static void updatePointsToRelations(Program program)
program - the program to be analyzed.public void start()
start in class IPAnalysispublic void analyzeProcedure(IPANode node)
node - the procedure node to be analyzed.public static java.util.Set<PointsToRel> getReturnRelations(CallSite callsite)
callsite - the calling site that generates the query.null means no information is
available (should produce universe doamin).public static boolean isSafeLibraryCall(FunctionCall fcall)
fcall - the function call to be examined.public java.util.Set<CallSite> updateCalls(IPANode node)
node - the procedure node being analyzed.public boolean updateCall(IPANode node)
node - the node that was just analyzed.public boolean updateReturn(IPANode node)
node - the procedure node to be analyzed.public static boolean containsUniverse()