LLVM 22.0.0git
|
#include "llvm/AsmParser/LLParser.h"
#include "llvm/ADT/APSInt.h"
#include "llvm/ADT/DenseMap.h"
#include "llvm/ADT/STLExtras.h"
#include "llvm/ADT/ScopeExit.h"
#include "llvm/ADT/SmallPtrSet.h"
#include "llvm/AsmParser/LLToken.h"
#include "llvm/AsmParser/SlotMapping.h"
#include "llvm/BinaryFormat/Dwarf.h"
#include "llvm/IR/Argument.h"
#include "llvm/IR/AutoUpgrade.h"
#include "llvm/IR/BasicBlock.h"
#include "llvm/IR/CallingConv.h"
#include "llvm/IR/Comdat.h"
#include "llvm/IR/ConstantRange.h"
#include "llvm/IR/ConstantRangeList.h"
#include "llvm/IR/Constants.h"
#include "llvm/IR/DebugInfoMetadata.h"
#include "llvm/IR/DerivedTypes.h"
#include "llvm/IR/Function.h"
#include "llvm/IR/GlobalIFunc.h"
#include "llvm/IR/GlobalObject.h"
#include "llvm/IR/InlineAsm.h"
#include "llvm/IR/InstIterator.h"
#include "llvm/IR/Instructions.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/Operator.h"
#include "llvm/IR/Value.h"
#include "llvm/IR/ValueSymbolTable.h"
#include "llvm/Support/Casting.h"
#include "llvm/Support/Compiler.h"
#include "llvm/Support/ErrorHandling.h"
#include "llvm/Support/MathExtras.h"
#include "llvm/Support/ModRef.h"
#include "llvm/Support/SaveAndRestore.h"
#include "llvm/Support/raw_ostream.h"
#include <algorithm>
#include <cassert>
#include <cstring>
#include <optional>
#include <vector>
#include "llvm/IR/Attributes.inc"
#include "llvm/IR/Metadata.def"
Go to the source code of this file.
Namespaces | |
namespace | llvm |
This is an optimization pass for GlobalISel generic memory operations. |
Macros | |
#define | GET_ATTR_NAMES |
#define | ATTRIBUTE_ENUM(ENUM_NAME, DISPLAY_NAME) |
#define | CC_VLS_CASE(ABIVlen) |
#define | HANDLE_SPECIALIZED_MDNODE_LEAF(CLASS) |
#define | DECLARE_FIELD(NAME, TYPE, INIT) |
#define | NOP_FIELD(NAME, TYPE, INIT) |
#define | REQUIRE_FIELD(NAME, TYPE, INIT) |
#define | PARSE_MD_FIELD(NAME, TYPE, DEFAULT) |
#define | PARSE_MD_FIELDS() |
#define | GET_OR_DISTINCT(CLASS, ARGS) |
#define | VISIT_MD_FIELDS(OPTIONAL, REQUIRED) |
#define | VISIT_MD_FIELDS(OPTIONAL, REQUIRED) |
#define | VISIT_MD_FIELDS(OPTIONAL, REQUIRED) |
#define | VISIT_MD_FIELDS(OPTIONAL, REQUIRED) |
#define | VISIT_MD_FIELDS(OPTIONAL, REQUIRED) |
#define | VISIT_MD_FIELDS(OPTIONAL, REQUIRED) |
#define | VISIT_MD_FIELDS(OPTIONAL, REQUIRED) |
#define | VISIT_MD_FIELDS(OPTIONAL, REQUIRED) |
#define | VISIT_MD_FIELDS(OPTIONAL, REQUIRED) |
#define | VISIT_MD_FIELDS(OPTIONAL, REQUIRED) |
#define | VISIT_MD_FIELDS(OPTIONAL, REQUIRED) |
#define | VISIT_MD_FIELDS(OPTIONAL, REQUIRED) |
#define | VISIT_MD_FIELDS(OPTIONAL, REQUIRED) |
#define | VISIT_MD_FIELDS(OPTIONAL, REQUIRED) |
#define | VISIT_MD_FIELDS(OPTIONAL, REQUIRED) |
#define | VISIT_MD_FIELDS(OPTIONAL, REQUIRED) |
#define | VISIT_MD_FIELDS(OPTIONAL, REQUIRED) |
#define | VISIT_MD_FIELDS(OPTIONAL, REQUIRED) |
#define | VISIT_MD_FIELDS(OPTIONAL, REQUIRED) |
#define | VISIT_MD_FIELDS(OPTIONAL, REQUIRED) |
#define | VISIT_MD_FIELDS(OPTIONAL, REQUIRED) |
#define | VISIT_MD_FIELDS(OPTIONAL, REQUIRED) |
#define | VISIT_MD_FIELDS(OPTIONAL, REQUIRED) |
#define | VISIT_MD_FIELDS(OPTIONAL, REQUIRED) |
#define | VISIT_MD_FIELDS(OPTIONAL, REQUIRED) |
#define | VISIT_MD_FIELDS(OPTIONAL, REQUIRED) |
#define | VISIT_MD_FIELDS(OPTIONAL, REQUIRED) |
#define | VISIT_MD_FIELDS(OPTIONAL, REQUIRED) |
#define | VISIT_MD_FIELDS(OPTIONAL, REQUIRED) |
#define | VISIT_MD_FIELDS(OPTIONAL, REQUIRED) |
Functions | |
static std::string | getTypeString (Type *T) |
static void | dropIntrinsicWithUnknownMetadataArgument (IntrinsicInst *II) |
static bool | isValidVisibilityForLinkage (unsigned V, unsigned L) |
static bool | isValidDLLStorageClassForLinkage (unsigned S, unsigned L) |
static void | maybeSetDSOLocal (bool DSOLocal, GlobalValue &GV) |
static bool | isSanitizer (lltok::Kind Kind) |
static Attribute::AttrKind | tokenToAttribute (lltok::Kind Kind) |
static bool | upgradeMemoryAttr (MemoryEffects &ME, lltok::Kind Kind) |
static GlobalValue * | createGlobalFwdRef (Module *M, PointerType *PTy) |
static unsigned | parseOptionalLinkageAux (lltok::Kind Kind, bool &HasLinkage) |
static std::optional< MemoryEffects::Location > | keywordToLoc (lltok::Kind Tok) |
static std::optional< ModRefInfo > | keywordToModRef (lltok::Kind Tok) |
static unsigned | keywordToFPClassTest (lltok::Kind Tok) |
bool | isOldDbgFormatIntrinsic (StringRef Name) |
static void | resolveFwdRef (ValueInfo *Fwd, ValueInfo &Resolved) |
Variables | |
static cl::opt< bool > | AllowIncompleteIR ("allow-incomplete-ir", cl::init(false), cl::Hidden, cl::desc("Allow incomplete IR on a best effort basis (references to unknown " "metadata will be dropped)")) |
static ValueInfo | EmptyVI |
static const auto | FwdVIRef = (GlobalValueSummaryMapTy::value_type *)-8 |
#define ATTRIBUTE_ENUM | ( | ENUM_NAME, | |
DISPLAY_NAME ) |
#define CC_VLS_CASE | ( | ABIVlen | ) |
Referenced by llvm::RISCVTargetLowering::LowerFormalArguments().
#define DECLARE_FIELD | ( | NAME, | |
TYPE, | |||
INIT ) |
Definition at line 5372 of file LLParser.cpp.
#define GET_ATTR_NAMES |
#define GET_OR_DISTINCT | ( | CLASS, | |
ARGS ) |
Definition at line 5394 of file LLParser.cpp.
#define HANDLE_SPECIALIZED_MDNODE_LEAF | ( | CLASS | ) |
#define NOP_FIELD | ( | NAME, | |
TYPE, | |||
INIT ) |
Definition at line 5373 of file LLParser.cpp.
#define PARSE_MD_FIELD | ( | NAME, | |
TYPE, | |||
DEFAULT ) |
Definition at line 5377 of file LLParser.cpp.
#define PARSE_MD_FIELDS | ( | ) |
Definition at line 5380 of file LLParser.cpp.
#define REQUIRE_FIELD | ( | NAME, | |
TYPE, | |||
INIT ) |
Definition at line 5374 of file LLParser.cpp.
#define VISIT_MD_FIELDS | ( | OPTIONAL, | |
REQUIRED ) |
#define VISIT_MD_FIELDS | ( | OPTIONAL, | |
REQUIRED ) |
#define VISIT_MD_FIELDS | ( | OPTIONAL, | |
REQUIRED ) |
#define VISIT_MD_FIELDS | ( | OPTIONAL, | |
REQUIRED ) |
#define VISIT_MD_FIELDS | ( | OPTIONAL, | |
REQUIRED ) |
#define VISIT_MD_FIELDS | ( | OPTIONAL, | |
REQUIRED ) |
#define VISIT_MD_FIELDS | ( | OPTIONAL, | |
REQUIRED ) |
#define VISIT_MD_FIELDS | ( | OPTIONAL, | |
REQUIRED ) |
#define VISIT_MD_FIELDS | ( | OPTIONAL, | |
REQUIRED ) |
#define VISIT_MD_FIELDS | ( | OPTIONAL, | |
REQUIRED ) |
#define VISIT_MD_FIELDS | ( | OPTIONAL, | |
REQUIRED ) |
#define VISIT_MD_FIELDS | ( | OPTIONAL, | |
REQUIRED ) |
#define VISIT_MD_FIELDS | ( | OPTIONAL, | |
REQUIRED ) |
#define VISIT_MD_FIELDS | ( | OPTIONAL, | |
REQUIRED ) |
#define VISIT_MD_FIELDS | ( | OPTIONAL, | |
REQUIRED ) |
#define VISIT_MD_FIELDS | ( | OPTIONAL, | |
REQUIRED ) |
#define VISIT_MD_FIELDS | ( | OPTIONAL, | |
REQUIRED ) |
#define VISIT_MD_FIELDS | ( | OPTIONAL, | |
REQUIRED ) |
#define VISIT_MD_FIELDS | ( | OPTIONAL, | |
REQUIRED ) |
#define VISIT_MD_FIELDS | ( | OPTIONAL, | |
REQUIRED ) |
#define VISIT_MD_FIELDS | ( | OPTIONAL, | |
REQUIRED ) |
#define VISIT_MD_FIELDS | ( | OPTIONAL, | |
REQUIRED ) |
#define VISIT_MD_FIELDS | ( | OPTIONAL, | |
REQUIRED ) |
#define VISIT_MD_FIELDS | ( | OPTIONAL, | |
REQUIRED ) |
#define VISIT_MD_FIELDS | ( | OPTIONAL, | |
REQUIRED ) |
#define VISIT_MD_FIELDS | ( | OPTIONAL, | |
REQUIRED ) |
#define VISIT_MD_FIELDS | ( | OPTIONAL, | |
REQUIRED ) |
#define VISIT_MD_FIELDS | ( | OPTIONAL, | |
REQUIRED ) |
#define VISIT_MD_FIELDS | ( | OPTIONAL, | |
REQUIRED ) |
#define VISIT_MD_FIELDS | ( | OPTIONAL, | |
REQUIRED ) |
|
inlinestatic |
Definition at line 1744 of file LLParser.cpp.
References llvm::GlobalValue::ExternalWeakLinkage, llvm::Type::getInt8Ty(), and llvm::GlobalValue::NotThreadLocal.
|
static |
Definition at line 151 of file LLParser.cpp.
References assert(), llvm::dyn_cast(), llvm::SmallVectorTemplateCommon< T, typename >::empty(), II, llvm::isa(), and llvm::SmallVectorTemplateBase< T, bool >::push_back().
|
static |
Definition at line 67 of file LLParser.cpp.
References llvm::raw_string_ostream::str(), and T.
Referenced by StackAccess::print().
Definition at line 6624 of file LLParser.cpp.
References llvm::Intrinsic::lookupIntrinsicID().
|
static |
Definition at line 1295 of file LLParser.cpp.
References llvm::lltok::kw_no_sanitize_address, llvm::lltok::kw_no_sanitize_hwaddress, and llvm::lltok::kw_sanitize_address_dyninit.
Definition at line 1129 of file LLParser.cpp.
References llvm::GlobalValue::DefaultStorageClass, and llvm::GlobalValue::isLocalLinkage().
Definition at line 1125 of file LLParser.cpp.
References llvm::GlobalValue::DefaultVisibility, and llvm::GlobalValue::isLocalLinkage().
|
static |
Definition at line 2611 of file LLParser.cpp.
References llvm::fcAllFlags, llvm::fcInf, llvm::fcNan, llvm::fcNegInf, llvm::fcNegNormal, llvm::fcNegSubnormal, llvm::fcNegZero, llvm::fcNormal, llvm::fcPosInf, llvm::fcPosNormal, llvm::fcPosSubnormal, llvm::fcPosZero, llvm::fcQNan, llvm::fcSNan, llvm::fcSubnormal, llvm::fcZero, llvm::lltok::kw_all, llvm::lltok::kw_inf, llvm::lltok::kw_nan, llvm::lltok::kw_ninf, llvm::lltok::kw_nnorm, llvm::lltok::kw_norm, llvm::lltok::kw_nsub, llvm::lltok::kw_nzero, llvm::lltok::kw_pinf, llvm::lltok::kw_pnorm, llvm::lltok::kw_psub, llvm::lltok::kw_pzero, llvm::lltok::kw_qnan, llvm::lltok::kw_snan, llvm::lltok::kw_sub, and llvm::lltok::kw_zero.
|
static |
Definition at line 2528 of file LLParser.cpp.
References llvm::ArgMem, llvm::ErrnoMem, llvm::InaccessibleMem, llvm::lltok::kw_argmem, llvm::lltok::kw_errnomem, and llvm::lltok::kw_inaccessiblemem.
|
static |
Definition at line 2541 of file LLParser.cpp.
References llvm::lltok::kw_none, llvm::lltok::kw_read, llvm::lltok::kw_readwrite, llvm::lltok::kw_write, llvm::Mod, llvm::ModRef, llvm::NoModRef, and llvm::Ref.
|
static |
Definition at line 1136 of file LLParser.cpp.
References llvm::GlobalValue::setDSOLocal().
|
static |
Definition at line 2019 of file LLParser.cpp.
References llvm::GlobalValue::AppendingLinkage, llvm::GlobalValue::AvailableExternallyLinkage, llvm::GlobalValue::CommonLinkage, llvm::GlobalValue::ExternalLinkage, llvm::GlobalValue::ExternalWeakLinkage, llvm::GlobalValue::InternalLinkage, llvm::lltok::kw_appending, llvm::lltok::kw_available_externally, llvm::lltok::kw_common, llvm::lltok::kw_extern_weak, llvm::lltok::kw_external, llvm::lltok::kw_internal, llvm::lltok::kw_linkonce, llvm::lltok::kw_linkonce_odr, llvm::lltok::kw_private, llvm::lltok::kw_weak, llvm::lltok::kw_weak_odr, llvm::GlobalValue::LinkOnceAnyLinkage, llvm::GlobalValue::LinkOnceODRLinkage, llvm::GlobalValue::PrivateLinkage, llvm::GlobalValue::WeakAnyLinkage, and llvm::GlobalValue::WeakODRLinkage.
Definition at line 9539 of file LLParser.cpp.
References assert(), llvm::ValueInfo::isReadOnly(), llvm::ValueInfo::isWriteOnly(), llvm::ValueInfo::setReadOnly(), and llvm::ValueInfo::setWriteOnly().
|
static |
Definition at line 1527 of file LLParser.cpp.
References llvm::Attribute::None.
|
static |
Definition at line 1647 of file LLParser.cpp.
References llvm::MemoryEffectsBase< IRMemLocation >::argMemOnly(), llvm::MemoryEffectsBase< IRMemLocation >::inaccessibleMemOnly(), llvm::MemoryEffectsBase< IRMemLocation >::inaccessibleOrArgMemOnly(), llvm::lltok::kw_argmemonly, llvm::lltok::kw_inaccessiblemem_or_argmemonly, llvm::lltok::kw_inaccessiblememonly, llvm::MemoryEffectsBase< IRMemLocation >::none(), llvm::MemoryEffectsBase< IRMemLocation >::readOnly(), and llvm::MemoryEffectsBase< IRMemLocation >::writeOnly().
|
static |
|
static |
Definition at line 9180 of file LLParser.cpp.
Referenced by llvm::yaml::CustomMappingTraits< GlobalValueSummaryMapTy >::fixAliaseeLinks().
|
static |
Definition at line 9537 of file LLParser.cpp.