LLVM  4.0.0
Classes | Namespaces | Macros | Functions | Variables
Verifier.cpp File Reference
#include "llvm/IR/Verifier.h"
#include "llvm/ADT/APFloat.h"
#include "llvm/ADT/APInt.h"
#include "llvm/ADT/ArrayRef.h"
#include "llvm/ADT/DenseMap.h"
#include "llvm/ADT/ilist.h"
#include "llvm/ADT/MapVector.h"
#include "llvm/ADT/Optional.h"
#include "llvm/ADT/STLExtras.h"
#include "llvm/ADT/SmallPtrSet.h"
#include "llvm/ADT/SmallSet.h"
#include "llvm/ADT/SmallVector.h"
#include "llvm/ADT/StringMap.h"
#include "llvm/ADT/StringRef.h"
#include "llvm/ADT/Twine.h"
#include "llvm/IR/Argument.h"
#include "llvm/IR/Attributes.h"
#include "llvm/IR/BasicBlock.h"
#include "llvm/IR/CFG.h"
#include "llvm/IR/CallSite.h"
#include "llvm/IR/CallingConv.h"
#include "llvm/IR/Comdat.h"
#include "llvm/IR/Constant.h"
#include "llvm/IR/ConstantRange.h"
#include "llvm/IR/Constants.h"
#include "llvm/IR/DataLayout.h"
#include "llvm/IR/DebugInfo.h"
#include "llvm/IR/DebugInfoMetadata.h"
#include "llvm/IR/DebugLoc.h"
#include "llvm/IR/DerivedTypes.h"
#include "llvm/IR/DiagnosticInfo.h"
#include "llvm/IR/Dominators.h"
#include "llvm/IR/Function.h"
#include "llvm/IR/GlobalAlias.h"
#include "llvm/IR/GlobalValue.h"
#include "llvm/IR/GlobalVariable.h"
#include "llvm/IR/InlineAsm.h"
#include "llvm/IR/InstrTypes.h"
#include "llvm/IR/Instruction.h"
#include "llvm/IR/Instructions.h"
#include "llvm/IR/InstVisitor.h"
#include "llvm/IR/IntrinsicInst.h"
#include "llvm/IR/Intrinsics.h"
#include "llvm/IR/LLVMContext.h"
#include "llvm/IR/Metadata.h"
#include "llvm/IR/Module.h"
#include "llvm/IR/ModuleSlotTracker.h"
#include "llvm/IR/PassManager.h"
#include "llvm/IR/Statepoint.h"
#include "llvm/IR/Type.h"
#include "llvm/IR/Use.h"
#include "llvm/IR/User.h"
#include "llvm/IR/Value.h"
#include "llvm/Pass.h"
#include "llvm/Support/AtomicOrdering.h"
#include "llvm/Support/Casting.h"
#include "llvm/Support/CommandLine.h"
#include "llvm/Support/Debug.h"
#include "llvm/Support/Dwarf.h"
#include "llvm/Support/ErrorHandling.h"
#include "llvm/Support/MathExtras.h"
#include "llvm/Support/raw_ostream.h"
#include <algorithm>
#include <cassert>
#include <cstdint>
#include <memory>
#include <string>
#include <utility>
#include "llvm/IR/Metadata.def"

Go to the source code of this file.

Classes

struct  llvm::VerifierSupport
 

Namespaces

 llvm
 Compute iterated dominance frontiers using a linear time algorithm.
 

Macros

#define HANDLE_SPECIALIZED_MDNODE_LEAF(CLASS)   void visit##CLASS(const CLASS &N);
 
#define Assert(C,...)   do { if (!(C)) { CheckFailed(__VA_ARGS__); return; } } while (false)
 We know that cond should be true, if not print an error message. More...
 
#define AssertDI(C,...)   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. More...
 
#define HANDLE_SPECIALIZED_MDNODE_LEAF(CLASS)
 
#define AssertTBAA(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)
 
template<class Ty >
static bool isValidMetadataArrayImpl (const MDTuple &N, bool AllowNull)
 
template<class Ty >
static bool isValidMetadataArray (const MDTuple &N)
 
template<class Ty >
static bool isValidMetadataNullArray (const MDTuple &N)
 
static bool hasConflictingReferenceFlags (unsigned Flags)
 
static InstructiongetSuccPad (TerminatorInst *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. More...
 
static AttrBuilder getParameterABIAttributes (int I, AttributeSet Attrs)
 
static bool isContiguous (const ConstantRange &A, const ConstantRange &B)
 
static ValuegetParentPad (Value *EHPad)
 
static DISubprogramgetSubprogram (Metadata *LocalScope)
 Carefully grab the subprogram from a local scope. More...
 
static uint64_t getVariableSize (const DILocalVariable &V)
 
static bool IsRootTBAANode (const MDNode *MD)
 
static bool IsScalarTBAANodeImpl (const MDNode *MD, SmallPtrSetImpl< const MDNode * > &Visited)
 

Variables

static cl::opt< boolVerifyDebugInfo ("verify-debug-info", cl::init(true))
 

Macro Definition Documentation

#define Assert (   C,
  ... 
)    do { if (!(C)) { CheckFailed(__VA_ARGS__); return; } } while (false)

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

Definition at line 512 of file Verifier.cpp.

#define AssertDI (   C,
  ... 
)    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 517 of file Verifier.cpp.

#define AssertTBAA (   C,
  ... 
)
Value:
do { \
if (!(C)) { \
CheckFailed(__VA_ARGS__); \
return false; \
} \
} while (false)
* if(!EatIfPresent(lltok::kw_thread_local)) return false
ParseOptionalThreadLocal := /*empty.
static GCRegistry::Add< ShadowStackGC > C("shadow-stack","Very portable GC for uncooperative code generators")

Definition at line 4524 of file Verifier.cpp.

Referenced by llvm::TBAAVerifier::visitTBAAMetadata().

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

Definition at line 410 of file Verifier.cpp.

#define HANDLE_SPECIALIZED_MDNODE_LEAF (   CLASS)
Value:
case Metadata::CLASS##Kind: \
visit##CLASS(cast<CLASS>(MD)); \
break;
const unsigned Kind

Definition at line 410 of file Verifier.cpp.

Function Documentation

static void forEachUser ( const Value User,
SmallPtrSet< const Value *, 32 > &  Visited,
llvm::function_ref< bool(const Value *)>  Callback 
)
static
static AttrBuilder getParameterABIAttributes ( int  I,
AttributeSet  Attrs 
)
static
static Value* getParentPad ( Value EHPad)
static

Definition at line 3251 of file Verifier.cpp.

Referenced by llvm::calculateClrEHStateNumbers().

static DISubprogram* getSubprogram ( Metadata LocalScope)
static

Carefully grab the subprogram from a local scope.

This carefully grabs the subprogram from a local scope, avoiding the built-in assertions that would typically fire.

Definition at line 4282 of file Verifier.cpp.

References assert().

static Instruction* getSuccPad ( TerminatorInst Terminator)
static

Definition at line 1890 of file Verifier.cpp.

References llvm::BasicBlock::getFirstNonPHI(), and llvm::MCID::Terminator.

static uint64_t getVariableSize ( const DILocalVariable V)
static

Definition at line 4335 of file Verifier.cpp.

References llvm::DIVariable::getRawType().

static bool hasConflictingReferenceFlags ( unsigned  Flags)
static

Definition at line 905 of file Verifier.cpp.

static bool isContiguous ( const ConstantRange A,
const ConstantRange B 
)
static
static bool isDINode ( const Metadata MD)
static

Definition at line 823 of file Verifier.cpp.

static bool IsRootTBAANode ( const MDNode MD)
static
static bool IsScalarTBAANodeImpl ( const MDNode MD,
SmallPtrSetImpl< const MDNode * > &  Visited 
)
static
static bool isScope ( const Metadata MD)
static

Definition at line 822 of file Verifier.cpp.

static bool isType ( const Metadata MD)
static

Definition at line 821 of file Verifier.cpp.

static bool isTypeCongruent ( Type L,
Type R 
)
static

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 2738 of file Verifier.cpp.

References llvm::dyn_cast(), llvm::PointerType::getAddressSpace(), L, and llvm::AArch64CC::PL.

template<class Ty >
static bool isValidMetadataArray ( const MDTuple N)
static

Definition at line 839 of file Verifier.cpp.

References N.

template<class Ty >
static bool isValidMetadataArrayImpl ( const MDTuple N,
bool  AllowNull 
)
static

Definition at line 826 of file Verifier.cpp.

References llvm::MDNode::operands().

template<class Ty >
static bool isValidMetadataNullArray ( const MDTuple N)
static

Definition at line 843 of file Verifier.cpp.

References N.

Variable Documentation

cl::opt<bool> VerifyDebugInfo("verify-debug-info", cl::init(true))
static