|
LLVM 23.0.0git
|
#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/MapVector.h"#include "llvm/ADT/STLExtras.h"#include "llvm/ADT/SmallPtrSet.h"#include "llvm/ADT/SmallVector.h"#include "llvm/ADT/StringExtras.h"#include "llvm/ADT/StringRef.h"#include "llvm/ADT/Twine.h"#include "llvm/BinaryFormat/Dwarf.h"#include "llvm/IR/Argument.h"#include "llvm/IR/AttributeMask.h"#include "llvm/IR/Attributes.h"#include "llvm/IR/BasicBlock.h"#include "llvm/IR/CFG.h"#include "llvm/IR/CallingConv.h"#include "llvm/IR/Comdat.h"#include "llvm/IR/Constant.h"#include "llvm/IR/ConstantRange.h"#include "llvm/IR/ConstantRangeList.h"#include "llvm/IR/Constants.h"#include "llvm/IR/ConvergenceVerifier.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/Dominators.h"#include "llvm/IR/EHPersonalities.h"#include "llvm/IR/FPEnv.h"#include "llvm/IR/Function.h"#include "llvm/IR/GCStrategy.h"#include "llvm/IR/GetElementPtrTypeIterator.h"#include "llvm/IR/GlobalAlias.h"#include "llvm/IR/GlobalValue.h"#include "llvm/IR/GlobalVariable.h"#include "llvm/IR/InlineAsm.h"#include "llvm/IR/InstVisitor.h"#include "llvm/IR/InstrTypes.h"#include "llvm/IR/Instruction.h"#include "llvm/IR/Instructions.h"#include "llvm/IR/IntrinsicInst.h"#include "llvm/IR/Intrinsics.h"#include "llvm/IR/IntrinsicsAArch64.h"#include "llvm/IR/IntrinsicsAMDGPU.h"#include "llvm/IR/IntrinsicsARM.h"#include "llvm/IR/IntrinsicsNVPTX.h"#include "llvm/IR/IntrinsicsWebAssembly.h"#include "llvm/IR/LLVMContext.h"#include "llvm/IR/MemoryModelRelaxationAnnotations.h"#include "llvm/IR/Metadata.h"#include "llvm/IR/Module.h"#include "llvm/IR/ModuleSlotTracker.h"#include "llvm/IR/PassManager.h"#include "llvm/IR/ProfDataUtils.h"#include "llvm/IR/Statepoint.h"#include "llvm/IR/Type.h"#include "llvm/IR/Use.h"#include "llvm/IR/User.h"#include "llvm/IR/VFABIDemangler.h"#include "llvm/IR/Value.h"#include "llvm/InitializePasses.h"#include "llvm/Pass.h"#include "llvm/ProfileData/InstrProf.h"#include "llvm/Support/AMDGPUAddrSpace.h"#include "llvm/Support/AtomicOrdering.h"#include "llvm/Support/Casting.h"#include "llvm/Support/CommandLine.h"#include "llvm/Support/ErrorHandling.h"#include "llvm/Support/MathExtras.h"#include "llvm/Support/ModRef.h"#include "llvm/Support/TimeProfiler.h"#include "llvm/Support/raw_ostream.h"#include "llvm/Transforms/Coroutines/CoroInstr.h"#include <algorithm>#include <cassert>#include <cstdint>#include <memory>#include <optional>#include <queue>#include <string>#include <utility>#include "llvm/IR/Metadata.def"#include "llvm/IR/Attributes.inc"#include "llvm/IR/VPIntrinsics.def"#include "llvm/IR/ConstrainedOps.def"Go to the source code of this file.
Classes | |
| struct | llvm::VerifierSupport |
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")) |
| #define ATTRIBUTE_ENUM | ( | ENUM_NAME, | |
| DISPLAY_NAME ) |
| #define ATTRIBUTE_STRBOOL | ( | ENUM_NAME, | |
| DISPLAY_NAME ) |
| #define BEGIN_REGISTER_VP_INTRINSIC | ( | VPID, | |
| ... ) |
| #define Check | ( | C, | |
| ... ) |
We know that cond should be true, if not print an error message.
Definition at line 681 of file Verifier.cpp.
| #define CheckDI | ( | C, | |
| ... ) |
We know that a debug info condition should be true, if not print an error message.
Definition at line 691 of file Verifier.cpp.
| #define CheckTBAA | ( | C, | |
| ... ) |
Definition at line 8086 of file Verifier.cpp.
Referenced by llvm::TBAAVerifier::visitTBAAMetadata().
| #define GET_ATTR_NAMES |
| #define HANDLE_SPECIALIZED_MDNODE_LEAF | ( | CLASS | ) |
Definition at line 557 of file Verifier.cpp.
| #define HANDLE_SPECIALIZED_MDNODE_LEAF | ( | CLASS | ) |
Definition at line 557 of file Verifier.cpp.
| #define INSTRUCTION | ( | NAME, | |
| NARGS, | |||
| ROUND_MODE, | |||
| INTRINSIC ) |
|
static |
Definition at line 732 of file Verifier.cpp.
References llvm::append_range(), llvm::SmallVectorTemplateCommon< T, typename >::empty(), llvm::SmallPtrSetImpl< PtrType >::insert(), llvm::Value::materialized_users(), and llvm::SmallVectorImpl< T >::pop_back_val().
|
static |
Definition at line 4241 of file Verifier.cpp.
References llvm::CallingConv::C, I, and llvm::Attribute::isValid().
Definition at line 4882 of file Verifier.cpp.
References llvm::cast(), and llvm::dyn_cast().
Referenced by llvm::sandboxir::CatchSwitchInst::getParentPad(), getUnwindDestToken(), and getUnwindDestTokenHelper().
|
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 7383 of file Verifier.cpp.
References assert(), llvm::dyn_cast(), getSubprogram(), and llvm::isa().
|
static |
Definition at line 3057 of file Verifier.cpp.
References llvm::cast(), llvm::dyn_cast(), llvm::BasicBlock::getFirstNonPHIIt(), and II.
Detect mutually exclusive flags.
Definition at line 1479 of file Verifier.cpp.
Definition at line 5552 of file Verifier.cpp.
References llvm::dyn_cast(), and llvm::isa().
|
static |
Definition at line 4573 of file Verifier.cpp.
Definition at line 1237 of file Verifier.cpp.
References llvm::isa().
Definition at line 1238 of file Verifier.cpp.
References llvm::isa().
|
static |
Definition at line 8308 of file Verifier.cpp.
References llvm::isa_and_nonnull().
Referenced by llvm::TBAAVerifier::visitTBAAMetadata().
Definition at line 8227 of file Verifier.cpp.
References llvm::MDNode::getNumOperands().
Referenced by IsScalarTBAANodeImpl(), and llvm::TBAAVerifier::visitTBAAMetadata().
Definition at line 8231 of file Verifier.cpp.
References llvm::dyn_cast_or_null(), llvm::mdconst::dyn_extract(), llvm::MDNode::getNumOperands(), llvm::MDNode::getOperand(), llvm::SmallPtrSetImpl< PtrType >::insert(), llvm::isa(), IsRootTBAANode(), IsScalarTBAANodeImpl(), and llvm::Offset.
Referenced by IsScalarTBAANodeImpl().
Definition at line 1236 of file Verifier.cpp.
References llvm::isa().
Definition at line 1235 of file Verifier.cpp.
References llvm::isa().
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 4231 of file Verifier.cpp.
References llvm::dyn_cast().
|
static |