LLVM: include/llvm/SandboxIR/Value.h Source File (original) (raw)

1

2

3

4

5

6

7

8

9#ifndef LLVM_SANDBOXIR_VALUE_H

10#define LLVM_SANDBOXIR_VALUE_H

11

16

18

19

20#define DEF_INSTR(ID, OPC, CLASS) class CLASS;

21#define DEF_CONST(ID, CLASS) class CLASS;

22#define DEF_USER(ID, CLASS) class CLASS;

23#include "llvm/SandboxIR/Values.def"

24class Context;

25class FuncletPadInst;

26class Type;

27class GlobalValue;

28class GlobalObject;

30class UnaryInstruction;

31class CmpInst;

32class IntrinsicInst;

33class Operator;

34class OverflowingBinaryOperator;

35class FPMathOperator;

36class Region;

37

38

39

40class UserUseIterator {

42

44 friend class Value;

45

46public:

52

57 return Use == Other.Use;

58 }

60 return !(*this == Other);

61 }

63};

64

65

67public:

69#define DEF_VALUE(ID, CLASS) ID,

70#define DEF_USER(ID, CLASS) ID,

71#define DEF_CONST(ID, CLASS) ID,

72#define DEF_INSTR(ID, OPC, CLASS) ID,

73#include "llvm/SandboxIR/Values.def"

74 };

75

76protected:

78 switch (ID) {

79#define DEF_VALUE(ID, CLASS) \

80 case ClassID::ID: \

81 return #ID;

82#define DEF_USER(ID, CLASS) \

83 case ClassID::ID: \

84 return #ID;

85#define DEF_CONST(ID, CLASS) \

86 case ClassID::ID: \

87 return #ID;

88#define DEF_INSTR(ID, OPC, CLASS) \

89 case ClassID::ID: \

90 return #ID;

91#include "llvm/SandboxIR/Values.def"

92 }

94 }

95

96

98#ifndef NDEBUG

99

101#endif

102

103

104

105

107

108 friend class Context;

109 friend class User;

110 friend class Use;

111 friend class VAArgInst;

113 friend class FenceInst;

121 friend class LoadInst;

122 friend class StoreInst;

124 friend class CallBase;

125 friend class CallInst;

143 friend class CastInst;

144 friend class PHINode;

147 friend class CmpInst;

165 friend class Utils;

166 friend class Module;

171

172

174 friend class ScoreBoard;

177

178

180

183

185

188

189public:

192

195

204

211

212

216

219

230

237

238

240

241

242

244 unsigned Cnt = 0;

245 for (auto It = use_begin(), ItE = use_end(); It != ItE; ++It) {

246 if (++Cnt >= Num)

247 return true;

248 }

249 return false;

250 }

251

253 unsigned Cnt = 0;

254 for (auto It = use_begin(), ItE = use_end(); It != ItE; ++It) {

255 if (++Cnt > Num)

256 return false;

257 }

258 return Cnt == Num;

259 }

260

262

264

269

270

272

273#ifndef NDEBUG

274

276

277 std::string getUid() const;

284 V.dumpOS(OS);

285 return OS;

286 }

289#endif

290};

291

293protected:

296 friend class Context;

297

298public:

302#ifndef NDEBUG

305 "Expected Metadata or InlineAssembly!");

306 }

311#endif

312};

313

314}

315

316#endif

assert(UImm &&(UImm !=~static_cast< T >(0)) &&"Invalid immediate!")

#define LLVM_DUMP_METHOD

Mark debug helper function definitions like dump() that should not be stripped from debug builds.

Machine Check Debug Module

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

LLVM Value Representation.

An efficient, type-erasing, non-owning reference to a callable.

A range adaptor for a pair of iterators.

This class implements an extremely fast bulk output stream that can only output to a stream.

static bool classof(const Value *From)

Definition Value.h:299

void dumpOS(raw_ostream &OS) const override

Definition Value.h:307

friend class Context

Definition Value.h:296

void verify() const override

Should crash if there is something wrong with the instruction.

Definition Value.h:303

OpaqueValue(llvm::Value *V, Context &Ctx)

Definition Value.h:294

Just like llvm::Type these are immutable, unique, never get freed and can only be created via static ...

Represents a Def-use/Use-def edge in SandboxIR.

Iterator for the Use edges of a Value's users.

Definition Value.h:40

const sandboxir::Use & getUse() const

Definition Value.h:62

std::input_iterator_tag iterator_category

Definition Value.h:51

std::ptrdiff_t difference_type

Definition Value.h:47

bool operator!=(const UserUseIterator &Other) const

Definition Value.h:59

value_type operator*() const

Definition Value.h:54

value_type * pointer

Definition Value.h:49

bool operator==(const UserUseIterator &Other) const

Definition Value.h:56

value_type & reference

Definition Value.h:50

LLVM_ABI UserUseIterator & operator++()

sandboxir::Use value_type

Definition Value.h:48

friend class Value

Definition Value.h:44

UserUseIterator()=default

A SandboxIR Value has users. This is the base class.

Definition Value.h:66

mapped_iterator< sandboxir::UserUseIterator, UseToUser > user_iterator

Definition Value.h:217

friend class InsertElementInst

Definition Value.h:116

friend class CatchReturnInst

Definition Value.h:132

friend class UnreachableInst

Definition Value.h:145

friend class UnaryOperator

Definition Value.h:138

llvm::Value * Val

The LLVM Value that corresponds to this SandboxIR Value.

Definition Value.h:106

friend class SelectInst

Definition Value.h:114

void dumpCommonFooter(raw_ostream &OS) const

friend class CastInst

Definition Value.h:143

virtual void dumpCommonHeader(raw_ostream &OS) const

friend class ConstantStruct

Definition Value.h:149

friend class FenceInst

Definition Value.h:113

friend class OverflowingBinaryOperator

Definition Value.h:169

const_use_iterator use_end() const

Definition Value.h:201

friend class ConstantVector

Definition Value.h:150

friend class FPMathOperator

Definition Value.h:170

friend class Module

Definition Value.h:166

friend class IntrinsicInst

Definition Value.h:167

ClassID getSubclassID() const

Definition Value.h:191

friend class ConstantDataVector

Definition Value.h:176

void dumpCommonSuffix(raw_ostream &OS) const

StringRef getName() const

\Returns the LLVM IR name of the bottom-most LLVM value.

Definition Value.h:271

virtual void verify() const =0

Should crash if there is something wrong with the instruction.

friend class Operator

Definition Value.h:168

friend class FreezeInst

Definition Value.h:112

LLVM_ABI void replaceAllUsesWith(Value *Other)

friend class ExtractElementInst

Definition Value.h:115

friend class User

Definition Value.h:109

LLVM_ABI unsigned getNumUses() const

\Returns the number of user edges (not necessarily to unique users).

UserUseIterator use_iterator

Definition Value.h:193

void printAsOperandCommon(raw_ostream &OS) const

friend class StoreInst

Definition Value.h:122

Context & Ctx

All values point to the context.

Definition Value.h:179

friend class CmpInst

Definition Value.h:147

friend class ShuffleVectorInst

Definition Value.h:117

friend class ExtractValueInst

Definition Value.h:118

friend class ReturnInst

Definition Value.h:123

friend class BranchInst

Definition Value.h:120

friend class SwitchInst

Definition Value.h:137

ClassID SubclassID

For isa/dyn_cast.

Definition Value.h:97

user_iterator user_end()

Definition Value.h:221

friend class ConstantPointerNull

Definition Value.h:152

LLVM_DUMP_METHOD void dump() const

friend class ConstantPtrAuth

Definition Value.h:163

friend class VAArgInst

Definition Value.h:111

LLVM_ABI Type * getType() const

friend class InsertValueInst

Definition Value.h:119

friend class ScoreBoard

Definition Value.h:174

friend class InvokeInst

Definition Value.h:126

LLVM_ABI Value(ClassID SubclassID, llvm::Value *Val, Context &Ctx)

friend class GlobalAlias

Definition Value.h:161

friend class CatchSwitchInst

Definition Value.h:135

friend class BinaryOperator

Definition Value.h:139

user_iterator const_user_iterator

Definition Value.h:218

friend class Use

Definition Value.h:110

friend class LLVMOpUserItToSBTy

Definition Value.h:182

const_use_iterator use_begin() const

Definition Value.h:197

friend class ConstantExpr

Definition Value.h:164

Context & getContext() const

Definition Value.h:263

const_user_iterator user_begin() const

Definition Value.h:224

friend class CatchPadInst

Definition Value.h:130

friend class ResumeInst

Definition Value.h:134

bool hasNUsesOrMore(unsigned Num) const

Return true if this value has N uses or more.

Definition Value.h:243

friend class PoisonValue

Definition Value.h:154

UserUseIterator const_use_iterator

Definition Value.h:194

friend class LoadInst

Definition Value.h:121

friend class AtomicRMWInst

Definition Value.h:140

Value & operator=(const Value &)=delete

friend class GlobalValue

Definition Value.h:156

iterator_range< const_user_iterator > users() const

Definition Value.h:234

iterator_range< user_iterator > users()

Definition Value.h:231

friend class GlobalVariable

Definition Value.h:160

std::string getUid() const

Returns the unique id in the form 'SB.' like 'SB1.'.

void clearValue()

Definition Value.h:181

LLVM_ABI void replaceUsesWithIf(Value *OtherV, llvm::function_ref< bool(const Use &)> ShouldReplace)

friend class Region

Definition Value.h:173

friend class BlockAddress

Definition Value.h:155

friend class ConstantArray

Definition Value.h:148

friend class CallBase

Definition Value.h:124

friend class Utils

Definition Value.h:165

friend class GlobalIFunc

Definition Value.h:159

bool hasNUses(unsigned Num) const

Return true if this Value has exactly N uses.

Definition Value.h:252

unsigned UID

A unique ID used for forming the name (used for debugging).

Definition Value.h:100

friend class GlobalObject

Definition Value.h:158

friend class Context

Definition Value.h:108

friend class GetElementPtrInst

Definition Value.h:133

virtual void dumpOS(raw_ostream &OS) const =0

friend class PHINode

Definition Value.h:144

use_iterator use_end()

Definition Value.h:200

friend class ConstantDataArray

Definition Value.h:175

friend class CleanupPadInst

Definition Value.h:131

void dumpCommonPrefix(raw_ostream &OS) const

iterator_range< use_iterator > uses()

Definition Value.h:205

const_user_iterator user_end() const

Definition Value.h:227

friend class FuncletPadInst

Definition Value.h:129

friend class AtomicCmpXchgInst

Definition Value.h:141

friend class NoCFIValue

Definition Value.h:162

friend class CatchSwitchAddHandler

Definition Value.h:146

friend class LandingPadInst

Definition Value.h:128

friend class CallBrInst

Definition Value.h:127

static const char * getSubclassIDStr(ClassID ID)

Definition Value.h:77

Value(const Value &)=delete

Disable copies.

friend class CleanupReturnInst

Definition Value.h:136

friend class AllocaInst

Definition Value.h:142

friend class ConstantAggregateZero

Definition Value.h:151

friend class CallInst

Definition Value.h:125

friend raw_ostream & operator<<(raw_ostream &OS, const sandboxir::Value &V)

Definition Value.h:283

LLVM_ABI use_iterator use_begin()

LLVM_ABI user_iterator user_begin()

friend class UndefValue

Definition Value.h:153

ClassID

Definition Value.h:68

friend class DSOLocalEquivalent

Definition Value.h:157

iterator_range< const_use_iterator > uses() const

Definition Value.h:208

#define llvm_unreachable(msg)

Marks that the current location is not supposed to be reachable.

unsigned ID

LLVM IR allows to use arbitrary numbers as calling convention identifiers.

FunctionAddr VTableAddr Value

iterator_range< T > make_range(T x, T y)

Convenience function for iterating over sub-ranges.

bool isa(const From &Val)

isa - Return true if the parameter to the template is an instance of one of the template type argu...

Helper for mapped_iterator.

Definition Value.h:213

User * operator()(const Use &Use) const

Definition Value.h:214