An analysis to identify the NULL state of pointers at each Instruction in a Function. Pointers can either be DefiniteNULL, NotNULL, or Unknown. Only DefiniteNULL and NotNULL are recorded - all other pointers are Unknown.
- class HasNullSummary a where
- data NullPointersSummary
- nullPointersAnalysis :: HasCFG cfg => cfg -> NullPointersSummary
- nullPointersAt :: NullPointersSummary -> Instruction -> [Value]
- notNullPointersAt :: NullPointersSummary -> Instruction -> [Value]
- branchNullInfo :: Failure NullInfoError m => Instruction -> m (BasicBlock, Value, BasicBlock)
- data NullInfoError
A record of the known NULL and known Not-NULL pointers at each Instruction.
Determine which pointers are NULL and NotNULL at each Instruction.
Given a BranchInst, return:
1) The BasicBlock where a pointer is known to be NULL
2) The value known to be NULL
3) The BasicBlock where the pointer is known to be not NULL