LLVM: lib/IR/Verifier.cpp File Reference (original) (raw)

Go to the source code of this file.

Macros
#define HANDLE_SPECIALIZED_MDNODE_LEAF(CLASS)
#define Check(C, ...)
We know that cond should be true, if not print an error message.
#define CheckDI(C, ...)
We know that a debug info condition should be true, if not print an error message.
#define HANDLE_SPECIALIZED_MDNODE_LEAF(CLASS)
#define GET_ATTR_NAMES
#define ATTRIBUTE_ENUM(ENUM_NAME, DISPLAY_NAME)
#define ATTRIBUTE_STRBOOL(ENUM_NAME, DISPLAY_NAME)
#define BEGIN_REGISTER_VP_INTRINSIC(VPID, ...)
#define INSTRUCTION(NAME, NARGS, ROUND_MODE, INTRINSIC)
#define CheckTBAA(C, ...)
Functions
static void forEachUser (const Value *User, SmallPtrSet< const Value *, 32 > &Visited, llvm::function_ref< bool(const Value *)> Callback)
static bool isType (const Metadata *MD)
static bool isScope (const Metadata *MD)
static bool isDINode (const Metadata *MD)
static bool isMDTuple (const Metadata *MD)
static bool hasConflictingReferenceFlags (unsigned Flags)
Detect mutually exclusive flags.
static Instruction * getSuccPad (Instruction *Terminator)
static bool isTypeCongruent (Type *L, Type *R)
Two types are "congruent" if they are identical, or if they are both pointer types with different pointee types and the same address space.
static AttrBuilder getParameterABIAttributes (LLVMContext &C, unsigned I, AttributeList Attrs)
static bool isContiguous (const ConstantRange &A, const ConstantRange &B)
static Value * getParentPad (Value *EHPad)
static bool isConstantIntMetadataOperand (const Metadata *MD)
static DISubprogram * getSubprogram (Metadata *LocalScope)
Carefully grab the subprogram from a local scope.
static bool IsRootTBAANode (const MDNode *MD)
static bool IsScalarTBAANodeImpl (const MDNode *MD, SmallPtrSetImpl< const MDNode * > &Visited)
static bool isNewFormatTBAATypeNode (llvm::MDNode *Type)
Variables
static cl::opt< bool > VerifyNoAliasScopeDomination ("verify-noalias-scope-decl-dom", cl::Hidden, cl::init(false), cl::desc("Ensure that llvm.experimental.noalias.scope.decl for identical " "scopes are not dominating"))

ATTRIBUTE_ENUM

#define ATTRIBUTE_ENUM ( ENUM_NAME,
DISPLAY_NAME )

ATTRIBUTE_STRBOOL

#define ATTRIBUTE_STRBOOL ( ENUM_NAME,
DISPLAY_NAME )

Value:

if (A.getKindAsString() == #DISPLAY_NAME) { \

auto V = A.getValueAsString(); \

if (!(V.empty() || V == "true" || V == "false")) \

CheckFailed("invalid value for '" #DISPLAY_NAME "' attribute: " + V + \

""); \

}

static GCRegistry::Add< ErlangGC > A("erlang", "erlang-compatible garbage collector")

BEGIN_REGISTER_VP_INTRINSIC

#define BEGIN_REGISTER_VP_INTRINSIC ( VPID,
... )

Check

Value:

do { \

if (!(C)) { \

CheckFailed(__VA_ARGS__); \

return; \

} \

} while (false)

@ C

The default llvm calling convention, compatible with C.

We know that cond should be true, if not print an error message.

Definition at line 671 of file Verifier.cpp.

CheckDI

#define CheckDI ( C,
... )

Value:

do { \

if (!(C)) { \

DebugInfoCheckFailed(__VA_ARGS__); \

return; \

} \

} while (false)

We know that a debug info condition should be true, if not print an error message.

Definition at line 681 of file Verifier.cpp.

CheckTBAA

#define CheckTBAA ( C,
... )

GET_ATTR_NAMES

HANDLE_SPECIALIZED_MDNODE_LEAF [1/2]

#define HANDLE_SPECIALIZED_MDNODE_LEAF ( CLASS )

Value:

void visit##CLASS(const CLASS &N);

void visit(MachineFunction &MF, MachineBasicBlock &Start, std::function< void(MachineBasicBlock *)> op)

Definition at line 548 of file Verifier.cpp.

HANDLE_SPECIALIZED_MDNODE_LEAF [2/2]

#define HANDLE_SPECIALIZED_MDNODE_LEAF ( CLASS )

Value:

case Metadata::CLASS##Kind: \

break;

decltype(auto) cast(const From &Val)

cast - Return the argument parameter cast to the specified type.

Definition at line 548 of file Verifier.cpp.

INSTRUCTION

#define INSTRUCTION ( NAME,
NARGS,
ROUND_MODE,
INTRINSIC )

Value:

case Intrinsic::INTRINSIC:

forEachUser()

getParameterABIAttributes()

AttrBuilder getParameterABIAttributes ( LLVMContext & C, unsigned I, AttributeList Attrs ) static

getParentPad()

getSubprogram()

getSuccPad()

hasConflictingReferenceFlags()

isConstantIntMetadataOperand()

isContiguous()

isDINode()

isMDTuple()

isNewFormatTBAATypeNode()

IsRootTBAANode()

IsScalarTBAANodeImpl()

isScope()

isType()

isTypeCongruent()

Two types are "congruent" if they are identical, or if they are both pointer types with different pointee types and the same address space.

Definition at line 4110 of file Verifier.cpp.

References llvm::dyn_cast().

VerifyNoAliasScopeDomination

cl::opt< bool > VerifyNoAliasScopeDomination("verify-noalias-scope-decl-dom", cl::Hidden, cl::init(false), cl::desc("Ensure that llvm.experimental.noalias.scope.decl for identical " "scopes are not dominating")) ( "verify-noalias-scope-decl-dom" , cl::Hidden , cl::init(false) , cl::desc("Ensure that llvm.experimental.noalias.scope.decl for identical " "scopes are not dominating") ) static