LLVM: lib/Transforms/ObjCARC/DependencyAnalysis.h Source File (original) (raw)

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22#ifndef LLVM_LIB_TRANSFORMS_OBJCARC_DEPENDENCYANALYSIS_H

23#define LLVM_LIB_TRANSFORMS_OBJCARC_DEPENDENCYANALYSIS_H

24

26

27namespace llvm {

31}

32

33namespace llvm {

35

36class ProvenanceAnalysis;

37

38

39

40

41

42

50

51

52

57

58bool

61

62

63

66

67

68

71

72

73

76

82

83}

84}

85

86#endif

LLVM Basic Block Representation.

LLVM Value Representation.

bool CanAlterRefCount(const Instruction *Inst, const Value *Ptr, ProvenanceAnalysis &PA, ARCInstKind Class)

Test whether the given instruction can result in a reference count modification (positive or negative...

DependenceKind

Defines different dependence kinds among various ARC constructs.

Definition DependencyAnalysis.h:43

@ CanChangeRetainCount

Definition DependencyAnalysis.h:46

@ RetainAutoreleaseDep

Blocks objc_retainAutorelease.

Definition DependencyAnalysis.h:47

@ AutoreleasePoolBoundary

Definition DependencyAnalysis.h:45

@ NeedsPositiveRetainCount

Definition DependencyAnalysis.h:44

@ RetainAutoreleaseRVDep

Blocks objc_retainAutoreleaseReturnValue.

Definition DependencyAnalysis.h:48

ARCInstKind

Equivalence classes of instructions in the ARC Model.

llvm::Instruction * findSingleDependency(DependenceKind Flavor, const Value *Arg, BasicBlock *StartBB, Instruction *StartInst, ProvenanceAnalysis &PA)

Find dependent instructions.

ARCInstKind GetARCInstKind(const Value *V)

Map V to its ARCInstKind equivalence class.

bool Depends(DependenceKind Flavor, Instruction *Inst, const Value *Arg, ProvenanceAnalysis &PA)

Test if there can be dependencies on Inst through Arg.

bool CanDecrementRefCount(ARCInstKind Kind)

Returns false if conservatively we can prove that any instruction mapped to this kind can not decreme...

bool CanUse(const Instruction *Inst, const Value *Ptr, ProvenanceAnalysis &PA, ARCInstKind Class)

Test whether the given instruction can "use" the given pointer's object in a way that requires the re...

This is an optimization pass for GlobalISel generic memory operations.