2022-11-20 05:07:22 +00:00
|
|
|
#ifndef COMPILER_IROPOINTERANALYSIS_H
|
|
|
|
#define COMPILER_IROPOINTERANALYSIS_H
|
|
|
|
|
2022-12-14 00:16:59 +00:00
|
|
|
#include "compiler/IrOptimizer.h"
|
|
|
|
|
|
|
|
extern void PointerAnalysis_Setup(void);
|
|
|
|
extern void PointerAnalysis_Cleanup(void);
|
|
|
|
extern void IRO_AnalyzePointers(Object *function);
|
|
|
|
extern Boolean PointerAnalysis_TwoLinearNodePointerExprsMightAlias(Object *proc, IROLinear *nd1, IROLinear *nd2);
|
|
|
|
extern Boolean PointerAnalysis_TwoENodePointerExprsMightAlias(Object *proc, ENode *nd1, ENode *nd2);
|
|
|
|
extern Boolean PointerAnalysis_IsLinearNodePointerExprDefinite(Object *proc, IROLinear *nd);
|
|
|
|
extern Boolean PointerAnalysis_IsENodePointerExprDefinite(Object *proc, ENode *nd);
|
|
|
|
extern Boolean PointerAnalysis_IsVariableValueDefinite(Object *proc, VarRecord *var, PointsToFunction *pointsTo);
|
|
|
|
extern void PointerAnalysis_LookupLinearNodePointerExpr(Object *proc, IROLinear *indirect, IROListNode **list);
|
|
|
|
extern void PointerAnalysis_LookupENodePointerExpr(Object *proc, ENode *indirect, ENodeList **list);
|
|
|
|
extern void PointerAnalysis_LookupVariableIntoLinearNodeExprs(Object *proc, VarRecord *var, PointsToFunction *pointsTo, IROList **list);
|
|
|
|
extern void PointerAnalysis_LookupVariableIntoENodeExprs(Object *proc, VarRecord *var, PointsToFunction *pointsTo, ENodeList **list);
|
|
|
|
extern void PointerAnalysis_GetFunctionKills(Object *proc, IROLinear *funccall, ObjectList **list);
|
|
|
|
extern void PointerAnalysis_GetFunctionDependencies(Object *proc, IROLinear *funccall, ObjectList **list);
|
|
|
|
extern void PointerAnalysis_PragmaMode(void);
|
|
|
|
extern void PointerAnalysis_ParseEntryPointsToSpecifier(DeclInfo *di);
|
|
|
|
extern void PointerAnalysis_ParseExitPointsToSpecifier(DeclInfo *di);
|
|
|
|
extern void PointerAnalysis_ParseFunctionModifiesSpecifier(DeclInfo *di);
|
2022-11-20 05:07:22 +00:00
|
|
|
|
|
|
|
#endif
|