LLVM 20.0.0git
|
#include "llvm/SandboxIR/Constant.h"
Public Member Functions | |
Constant * | getPointer () const |
The pointer that is signed in this ptrauth signed pointer. | |
ConstantInt * | getKey () const |
The Key ID, an i32 constant. | |
ConstantInt * | getDiscriminator () const |
The integer discriminator, an i64 constant, or 0. | |
Constant * | getAddrDiscriminator () const |
The address discriminator if any, or the null constant. | |
bool | hasAddressDiscriminator () const |
Whether there is any non-null address discriminator. | |
bool | hasSpecialAddressDiscriminator (uint64_t Value) const |
Whether the address uses a special address discriminator. | |
bool | isKnownCompatibleWith (const Value *Key, const Value *Discriminator, const DataLayout &DL) const |
Check whether an authentication operation with key Key and (possibly blended) discriminator Discriminator is known to be compatible with this ptrauth signed pointer. | |
ConstantPtrAuth * | getWithSameSchema (Constant *Pointer) const |
Produce a new ptrauth expression signing the given value using the same schema as is stored in one. | |
Public Member Functions inherited from llvm::sandboxir::Constant | |
sandboxir::Context & | getParent () const |
unsigned | getUseOperandNo (const Use &Use) const override |
\Returns the operand index of Use . | |
void | verify () const override |
Should crash if there is something wrong with the instruction. | |
void | dumpOS (raw_ostream &OS) const override |
Public Member Functions inherited from llvm::sandboxir::User | |
virtual op_iterator | op_begin () |
virtual op_iterator | op_end () |
virtual const_op_iterator | op_begin () const |
virtual const_op_iterator | op_end () const |
op_range | operands () |
const_op_range | operands () const |
Value * | getOperand (unsigned OpIdx) const |
Use | getOperandUse (unsigned OpIdx) const |
\Returns the operand edge for OpIdx . | |
virtual unsigned | getNumOperands () const |
virtual void | setOperand (unsigned OperandIdx, Value *Operand) |
bool | replaceUsesOfWith (Value *FromV, Value *ToV) |
Replaces any operands that match FromV with ToV . | |
void | verify () const override |
Should crash if there is something wrong with the instruction. | |
void | dumpCommonHeader (raw_ostream &OS) const final |
void | dumpOS (raw_ostream &OS) const override |
Public Member Functions inherited from llvm::sandboxir::Value | |
virtual | ~Value ()=default |
ClassID | getSubclassID () const |
use_iterator | use_begin () |
const_use_iterator | use_begin () const |
use_iterator | use_end () |
const_use_iterator | use_end () const |
iterator_range< use_iterator > | uses () |
iterator_range< const_use_iterator > | uses () const |
user_iterator | user_begin () |
user_iterator | user_end () |
const_user_iterator | user_begin () const |
const_user_iterator | user_end () const |
iterator_range< user_iterator > | users () |
iterator_range< const_user_iterator > | users () const |
unsigned | getNumUses () const |
\Returns the number of user edges (not necessarily to unique users). | |
bool | hasNUsesOrMore (unsigned Num) const |
Return true if this value has N uses or more. | |
bool | hasNUses (unsigned Num) const |
Return true if this Value has exactly N uses. | |
Type * | getType () const |
Context & | getContext () const |
void | replaceUsesWithIf (Value *OtherV, llvm::function_ref< bool(const Use &)> ShouldReplace) |
void | replaceAllUsesWith (Value *Other) |
StringRef | getName () const |
\Returns the LLVM IR name of the bottom-most LLVM value. | |
virtual void | verify () const =0 |
Should crash if there is something wrong with the instruction. | |
std::string | getUid () const |
Returns the unique id in the form 'SB<number>.' like 'SB1.'. | |
virtual void | dumpCommonHeader (raw_ostream &OS) const |
void | dumpCommonFooter (raw_ostream &OS) const |
void | dumpCommonPrefix (raw_ostream &OS) const |
void | dumpCommonSuffix (raw_ostream &OS) const |
void | printAsOperandCommon (raw_ostream &OS) const |
virtual void | dumpOS (raw_ostream &OS) const =0 |
LLVM_DUMP_METHOD void | dump () const |
Static Public Member Functions | |
static ConstantPtrAuth * | get (Constant *Ptr, ConstantInt *Key, ConstantInt *Disc, Constant *AddrDisc) |
Return a pointer signed with the specified parameters. | |
static bool | classof (const sandboxir::Value *From) |
For isa/dyn_cast. | |
Static Public Member Functions inherited from llvm::sandboxir::Constant | |
static bool | classof (const sandboxir::Value *From) |
For isa/dyn_cast. | |
Static Public Member Functions inherited from llvm::sandboxir::User | |
static bool | classof (const Value *From) |
For isa/dyn_cast. | |
Friends | |
class | Context |
Additional Inherited Members | |
Public Types inherited from llvm::sandboxir::User | |
using | op_iterator = OperandUseIterator |
using | const_op_iterator = OperandUseIterator |
using | op_range = iterator_range< op_iterator > |
using | const_op_range = iterator_range< const_op_iterator > |
Public Types inherited from llvm::sandboxir::Value | |
enum class | ClassID : unsigned { DEF_VALUE , DEF_USER , DEF_CONST , DEF_INSTR } |
using | use_iterator = UserUseIterator |
using | const_use_iterator = UserUseIterator |
using | user_iterator = mapped_iterator< sandboxir::UserUseIterator, UseToUser > |
using | const_user_iterator = user_iterator |
Protected Member Functions inherited from llvm::sandboxir::Constant | |
Constant (llvm::Constant *C, sandboxir::Context &SBCtx) | |
Constant (ClassID ID, llvm::Constant *C, sandboxir::Context &SBCtx) | |
Use | getOperandUseInternal (unsigned OpIdx, bool Verify) const override |
\Returns the Use for the OpIdx'th operand. | |
Protected Member Functions inherited from llvm::sandboxir::User | |
User (ClassID ID, llvm::Value *V, Context &Ctx) | |
Use | getOperandUseDefault (unsigned OpIdx, bool Verify) const |
\Returns the Use edge that corresponds to OpIdx . | |
virtual Use | getOperandUseInternal (unsigned OpIdx, bool Verify) const =0 |
\Returns the Use for the OpIdx'th operand. | |
unsigned | getUseOperandNoDefault (const Use &Use) const |
The default implementation works only for single-LLVMIR-instruction Users and only if they match exactly the LLVM instruction. | |
virtual unsigned | getUseOperandNo (const Use &Use) const =0 |
\Returns the operand index of Use . | |
void | swapOperandsInternal (unsigned OpIdxA, unsigned OpIdxB) |
void | verifyUserOfLLVMUse (const llvm::Use &Use) const |
Protected Member Functions inherited from llvm::sandboxir::Value | |
void | clearValue () |
Value (ClassID SubclassID, llvm::Value *Val, Context &Ctx) | |
Value (const Value &)=delete | |
Disable copies. | |
Value & | operator= (const Value &)=delete |
Static Protected Member Functions inherited from llvm::sandboxir::Value | |
static const char * | getSubclassIDStr (ClassID ID) |
Protected Attributes inherited from llvm::sandboxir::Value | |
ClassID | SubclassID |
For isa/dyn_cast. | |
unsigned | UID |
A unique ID used for forming the name (used for debugging). | |
llvm::Value * | Val = nullptr |
The LLVM Value that corresponds to this SandboxIR Value. | |
Context & | Ctx |
All values point to the context. | |
Definition at line 1091 of file Constant.h.
|
inlinestatic |
|
static |
Return a pointer signed with the specified parameters.
Definition at line 423 of file Constant.cpp.
References llvm::ConstantPtrAuth::get(), Ptr, and llvm::sandboxir::Value::Val.
Constant * llvm::sandboxir::ConstantPtrAuth::getAddrDiscriminator | ( | ) | const |
The address discriminator if any, or the null constant.
If present, this must be a value equivalent to the storage location of the only global-initializer user of the ptrauth signed pointer.
Definition at line 446 of file Constant.cpp.
References llvm::sandboxir::Value::Ctx, getAddrDiscriminator(), llvm::sandboxir::Context::getOrCreateConstant(), and llvm::sandboxir::Value::Val.
Referenced by getAddrDiscriminator().
ConstantInt * llvm::sandboxir::ConstantPtrAuth::getDiscriminator | ( | ) | const |
The integer discriminator, an i64 constant, or 0.
Definition at line 441 of file Constant.cpp.
References llvm::sandboxir::Value::Ctx, llvm::sandboxir::Context::getOrCreateConstant(), and llvm::sandboxir::Value::Val.
ConstantInt * llvm::sandboxir::ConstantPtrAuth::getKey | ( | ) | const |
The Key ID, an i32 constant.
Definition at line 436 of file Constant.cpp.
References llvm::sandboxir::Value::Ctx, llvm::sandboxir::Context::getOrCreateConstant(), and llvm::sandboxir::Value::Val.
Constant * llvm::sandboxir::ConstantPtrAuth::getPointer | ( | ) | const |
The pointer that is signed in this ptrauth signed pointer.
Definition at line 431 of file Constant.cpp.
References llvm::sandboxir::Value::Ctx, llvm::sandboxir::Context::getOrCreateConstant(), getPointer(), and llvm::sandboxir::Value::Val.
Referenced by getPointer().
ConstantPtrAuth * llvm::sandboxir::ConstantPtrAuth::getWithSameSchema | ( | Constant * | Pointer | ) | const |
Produce a new ptrauth expression signing the given value using the same schema as is stored in one.
Definition at line 451 of file Constant.cpp.
References llvm::sandboxir::Value::Ctx, llvm::sandboxir::Context::getOrCreateConstant(), getWithSameSchema(), and llvm::sandboxir::Value::Val.
Referenced by getWithSameSchema().
|
inline |
Whether there is any non-null address discriminator.
Definition at line 1115 of file Constant.h.
References llvm::sandboxir::Value::Val.
|
inline |
Whether the address uses a special address discriminator.
These discriminators can't be used in real pointer-auth values; they can only be used in "prototype" values that indicate how some real schema is supposed to be produced.
Definition at line 1123 of file Constant.h.
References llvm::sandboxir::Value::Val.
|
inline |
Check whether an authentication operation with key Key
and (possibly blended) discriminator Discriminator
is known to be compatible with this ptrauth signed pointer.
Definition at line 1131 of file Constant.h.
References DL, and llvm::sandboxir::Value::Val.
|
friend |
Definition at line 1094 of file Constant.h.