LLVM: include/llvm/Transforms/Utils/SSAUpdater.h Source File (original) (raw)

1

2

3

4

5

6

7

8

9

10

11

12

13#ifndef LLVM_TRANSFORMS_UTILS_SSAUPDATER_H

14#define LLVM_TRANSFORMS_UTILS_SSAUPDATER_H

15

18#include

19

20namespace llvm {

21

32

33

34

35

36

37

38

41

42private:

43

44

45 void *AV = nullptr;

46

47

48 Type *ProtoType = nullptr;

49

50

51 std::string ProtoName;

52

53

54

56

57public:

58

59

64

65

66

67

68

70

71

72

74

75

76

78

79

80

82

83

84

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

108

109

110

111

112

113

114

115

117

118

119

120

121

122

126

127

128

129

130

131

133

134private:

137};

138

139

140

141

142

143

144

145

146

148protected:

150

151public:

155

156

157

158

159

160

162

163

164

166

167

168

170

171

173

174

176

177

178

180

181

182

183

185 return nullptr;

186 }

187};

188

189}

190

191#endif

Class recording the (high level) value of a variable.

ArrayRef - Represent a constant reference to an array (0 or more elements consecutively in memory),...

LLVM Basic Block Representation.

Record of a variable value-assignment, aka a non instruction representation of the dbg....

An instruction for reading from memory.

Helper class for SSA formation on a set of values defined in multiple blocks.

Definition SSAUpdater.h:39

void RewriteUse(Use &U)

Rewrite a use of the symbolic value.

void RewriteUseAfterInsertions(Use &U)

Rewrite a use like RewriteUse but handling in-block definitions.

Value * FindValueForBlock(BasicBlock *BB) const

Return the value for the specified block if the SSAUpdater has one, otherwise return nullptr.

SSAUpdater & operator=(const SSAUpdater &)=delete

void Initialize(Type *Ty, StringRef Name)

Reset this object to get ready for a new set of SSA updates with type 'Ty'.

Value * GetValueInMiddleOfBlock(BasicBlock *BB)

Construct SSA form, materializing a value that is live in the middle of the specified block.

SSAUpdater(SmallVectorImpl< PHINode * > *InsertedPHIs=nullptr)

If InsertedPHIs is specified, it will be filled in with all PHI Nodes created by rewriting.

void UpdateDebugValues(Instruction *I)

Rewrite debug value intrinsics to conform to a new SSA form.

SSAUpdater(const SSAUpdater &)=delete

bool HasValueForBlock(BasicBlock *BB) const

Return true if the SSAUpdater already has a value for the specified block.

Value * GetValueAtEndOfBlock(BasicBlock *BB)

Construct SSA form, materializing a value that is live at the end of the specified block.

void AddAvailableValue(BasicBlock *BB, Value *V)

Indicate that a rewritten value is available in the specified block with the specified value.

This class consists of common code factored out of the SmallVector class to reduce code duplication b...

StringRef - Represent a constant reference to a string, i.e.

The instances of the Type class are immutable: once they are created, they are never changed.

A Use represents the edge between a Value definition and its users.

LLVM Value Representation.

This is an optimization pass for GlobalISel generic memory operations.