LLVM  3.7.0
Classes | Namespaces | Macros | Enumerations | Functions | Variables
BitcodeReader.cpp File Reference
#include "llvm/Bitcode/ReaderWriter.h"
#include "llvm/ADT/STLExtras.h"
#include "llvm/ADT/SmallString.h"
#include "llvm/ADT/SmallVector.h"
#include "llvm/ADT/Triple.h"
#include "llvm/Bitcode/BitstreamReader.h"
#include "llvm/Bitcode/LLVMBitCodes.h"
#include "llvm/IR/AutoUpgrade.h"
#include "llvm/IR/Constants.h"
#include "llvm/IR/DebugInfo.h"
#include "llvm/IR/DebugInfoMetadata.h"
#include "llvm/IR/DerivedTypes.h"
#include "llvm/IR/DiagnosticPrinter.h"
#include "llvm/IR/GVMaterializer.h"
#include "llvm/IR/InlineAsm.h"
#include "llvm/IR/IntrinsicInst.h"
#include "llvm/IR/LLVMContext.h"
#include "llvm/IR/Module.h"
#include "llvm/IR/OperandTraits.h"
#include "llvm/IR/Operator.h"
#include "llvm/IR/ValueHandle.h"
#include "llvm/Support/DataStream.h"
#include "llvm/Support/ManagedStatic.h"
#include "llvm/Support/MathExtras.h"
#include "llvm/Support/MemoryBuffer.h"
#include "llvm/Support/raw_ostream.h"
#include <deque>
Include dependency graph for BitcodeReader.cpp:

Go to the source code of this file.

Classes

struct  llvm::OperandTraits< ConstantPlaceHolder >
 

Namespaces

 llvm
 Compute iterated dominance frontiers using a linear time algorithm.
 

Macros

#define GET_OR_DISTINCT(CLASS, DISTINCT, ARGS)   (DISTINCT ? CLASS::getDistinct ARGS : CLASS::get ARGS)
 

Enumerations

enum  
 

Functions

static std::error_code error (DiagnosticHandlerFunction DiagnosticHandler, std::error_code EC, const Twine &Message)
 
static std::error_code error (DiagnosticHandlerFunction DiagnosticHandler, std::error_code EC)
 
static std::error_code error (DiagnosticHandlerFunction DiagnosticHandler, const Twine &Message)
 
static DiagnosticHandlerFunction getDiagHandler (DiagnosticHandlerFunction F, LLVMContext &C)
 
template<typename StrTy >
static bool convertToString (ArrayRef< uint64_t > Record, unsigned Idx, StrTy &Result)
 Convert a string from a record into an std::string, return true on failure. More...
 
static bool hasImplicitComdat (size_t Val)
 
static GlobalValue::LinkageTypes getDecodedLinkage (unsigned Val)
 
static GlobalValue::VisibilityTypes getDecodedVisibility (unsigned Val)
 
static
GlobalValue::DLLStorageClassTypes 
getDecodedDLLStorageClass (unsigned Val)
 
static
GlobalVariable::ThreadLocalMode 
getDecodedThreadLocalMode (unsigned Val)
 
static int getDecodedCastOpcode (unsigned Val)
 
static int getDecodedBinaryOpcode (unsigned Val, Type *Ty)
 
static AtomicRMWInst::BinOp getDecodedRMWOperation (unsigned Val)
 
static AtomicOrdering getDecodedOrdering (unsigned Val)
 
static SynchronizationScope getDecodedSynchScope (unsigned Val)
 
static Comdat::SelectionKind getDecodedComdatSelectionKind (unsigned Val)
 
static FastMathFlags getDecodedFastMathFlags (unsigned Val)
 
static void upgradeDLLImportExportLinkage (llvm::GlobalValue *GV, unsigned Val)
 
static void decodeLLVMAttributesForBitcode (AttrBuilder &B, uint64_t EncodedAttrs)
 This fills an AttrBuilder object with the LLVM attributes that have been decoded from the given integer. More...
 
static Attribute::AttrKind getAttrFromCode (uint64_t Code)
 
static int64_t unrotateSign (uint64_t U)
 
static APInt readWideAPInt (ArrayRef< uint64_t > Vals, unsigned TypeBits)
 
static std::error_code typeCheckLoadStoreInst (DiagnosticHandlerFunction DH, Type *ValType, Type *PtrType)
 
static ErrorOr
< std::unique_ptr< Module > > 
getBitcodeModuleImpl (std::unique_ptr< DataStreamer > Streamer, StringRef Name, BitcodeReader *R, LLVMContext &Context, bool MaterializeAll, bool ShouldLazyLoadMetadata)
 
static ErrorOr
< std::unique_ptr< Module > > 
getLazyBitcodeModuleImpl (std::unique_ptr< MemoryBuffer > &&Buffer, LLVMContext &Context, bool MaterializeAll, DiagnosticHandlerFunction DiagnosticHandler, bool ShouldLazyLoadMetadata=false)
 Get a lazy one-at-time loading module from bitcode. More...
 

Variables

static ManagedStatic
< BitcodeErrorCategoryType > 
ErrorCategory
 

Macro Definition Documentation

#define GET_OR_DISTINCT (   CLASS,
  DISTINCT,
  ARGS 
)    (DISTINCT ? CLASS::getDistinct ARGS : CLASS::get ARGS)

Enumeration Type Documentation

anonymous enum

Definition at line 40 of file BitcodeReader.cpp.

Function Documentation

template<typename StrTy >
static bool convertToString ( ArrayRef< uint64_t >  Record,
unsigned  Idx,
StrTy &  Result 
)
static

Convert a string from a record into an std::string, return true on failure.

Definition at line 495 of file BitcodeReader.cpp.

References llvm::ArrayRef< T >::size().

static void decodeLLVMAttributesForBitcode ( AttrBuilder B,
uint64_t  EncodedAttrs 
)
static

This fills an AttrBuilder object with the LLVM attributes that have been decoded from the given integer.

This function must stay in sync with 'encodeLLVMAttributesForBitcode'.

Definition at line 1010 of file BitcodeReader.cpp.

References llvm::AttrBuilder::addAlignmentAttr(), llvm::AttrBuilder::addRawValue(), and llvm::isPowerOf2_32().

static std::error_code error ( DiagnosticHandlerFunction  DiagnosticHandler,
std::error_code  EC,
const Twine Message 
)
static
static std::error_code error ( DiagnosticHandlerFunction  DiagnosticHandler,
std::error_code  EC 
)
static

Definition at line 395 of file BitcodeReader.cpp.

References error().

static std::error_code error ( DiagnosticHandlerFunction  DiagnosticHandler,
const Twine Message 
)
static

Definition at line 400 of file BitcodeReader.cpp.

References llvm::CorruptedBitcode, error(), and llvm::make_error_code().

static Attribute::AttrKind getAttrFromCode ( uint64_t  Code)
static

Definition at line 1085 of file BitcodeReader.cpp.

References llvm::bitc::ATTR_KIND_ALIGNMENT, llvm::bitc::ATTR_KIND_ALWAYS_INLINE, llvm::bitc::ATTR_KIND_ARGMEMONLY, llvm::bitc::ATTR_KIND_BUILTIN, llvm::bitc::ATTR_KIND_BY_VAL, llvm::bitc::ATTR_KIND_COLD, llvm::bitc::ATTR_KIND_CONVERGENT, llvm::bitc::ATTR_KIND_DEREFERENCEABLE, llvm::bitc::ATTR_KIND_DEREFERENCEABLE_OR_NULL, llvm::bitc::ATTR_KIND_IN_ALLOCA, llvm::bitc::ATTR_KIND_IN_REG, llvm::bitc::ATTR_KIND_INLINE_HINT, llvm::bitc::ATTR_KIND_JUMP_TABLE, llvm::bitc::ATTR_KIND_MIN_SIZE, llvm::bitc::ATTR_KIND_NAKED, llvm::bitc::ATTR_KIND_NEST, llvm::bitc::ATTR_KIND_NO_ALIAS, llvm::bitc::ATTR_KIND_NO_BUILTIN, llvm::bitc::ATTR_KIND_NO_CAPTURE, llvm::bitc::ATTR_KIND_NO_DUPLICATE, llvm::bitc::ATTR_KIND_NO_IMPLICIT_FLOAT, llvm::bitc::ATTR_KIND_NO_INLINE, llvm::bitc::ATTR_KIND_NO_RED_ZONE, llvm::bitc::ATTR_KIND_NO_RETURN, llvm::bitc::ATTR_KIND_NO_UNWIND, llvm::bitc::ATTR_KIND_NON_LAZY_BIND, llvm::bitc::ATTR_KIND_NON_NULL, llvm::bitc::ATTR_KIND_OPTIMIZE_FOR_SIZE, llvm::bitc::ATTR_KIND_OPTIMIZE_NONE, llvm::bitc::ATTR_KIND_READ_NONE, llvm::bitc::ATTR_KIND_READ_ONLY, llvm::bitc::ATTR_KIND_RETURNED, llvm::bitc::ATTR_KIND_RETURNS_TWICE, llvm::bitc::ATTR_KIND_S_EXT, llvm::bitc::ATTR_KIND_SAFESTACK, llvm::bitc::ATTR_KIND_SANITIZE_ADDRESS, llvm::bitc::ATTR_KIND_SANITIZE_MEMORY, llvm::bitc::ATTR_KIND_SANITIZE_THREAD, llvm::bitc::ATTR_KIND_STACK_ALIGNMENT, llvm::bitc::ATTR_KIND_STACK_PROTECT, llvm::bitc::ATTR_KIND_STACK_PROTECT_REQ, llvm::bitc::ATTR_KIND_STACK_PROTECT_STRONG, llvm::bitc::ATTR_KIND_STRUCT_RET, llvm::bitc::ATTR_KIND_UW_TABLE, llvm::bitc::ATTR_KIND_Z_EXT, llvm::CallingConv::Cold, llvm::MCID::Convergent, llvm::ISD::JumpTable, llvm::NoAlias, and llvm::None.

static ErrorOr<std::unique_ptr<Module> > getBitcodeModuleImpl ( std::unique_ptr< DataStreamer Streamer,
StringRef  Name,
BitcodeReader *  R,
LLVMContext Context,
bool  MaterializeAll,
bool  ShouldLazyLoadMetadata 
)
static
static int getDecodedBinaryOpcode ( unsigned  Val,
Type Ty 
)
static
static int getDecodedCastOpcode ( unsigned  Val)
static
static Comdat::SelectionKind getDecodedComdatSelectionKind ( unsigned  Val)
static
static GlobalValue::DLLStorageClassTypes getDecodedDLLStorageClass ( unsigned  Val)
static

Definition at line 569 of file BitcodeReader.cpp.

static FastMathFlags getDecodedFastMathFlags ( unsigned  Val)
static
static GlobalValue::LinkageTypes getDecodedLinkage ( unsigned  Val)
static

Definition at line 517 of file BitcodeReader.cpp.

static AtomicOrdering getDecodedOrdering ( unsigned  Val)
static
static AtomicRMWInst::BinOp getDecodedRMWOperation ( unsigned  Val)
static
static SynchronizationScope getDecodedSynchScope ( unsigned  Val)
static
static GlobalVariable::ThreadLocalMode getDecodedThreadLocalMode ( unsigned  Val)
static

Definition at line 578 of file BitcodeReader.cpp.

static GlobalValue::VisibilityTypes getDecodedVisibility ( unsigned  Val)
static

Definition at line 559 of file BitcodeReader.cpp.

static DiagnosticHandlerFunction getDiagHandler ( DiagnosticHandlerFunction  F,
LLVMContext C 
)
static

Definition at line 419 of file BitcodeReader.cpp.

References llvm::DI, llvm::LLVMContext::diagnose(), and F().

static ErrorOr<std::unique_ptr<Module> > getLazyBitcodeModuleImpl ( std::unique_ptr< MemoryBuffer > &&  Buffer,
LLVMContext Context,
bool  MaterializeAll,
DiagnosticHandlerFunction  DiagnosticHandler,
bool  ShouldLazyLoadMetadata = false 
)
static

Get a lazy one-at-time loading module from bitcode.

This isn't always used in a lazy context. In particular, it's also used by parseBitcodeFile(). If this is truly lazy, then we need to eagerly pull in forward-referenced functions from block address references.

Parameters
[in]MaterializeAllSet to true if we should materialize everything.

Definition at line 4691 of file BitcodeReader.cpp.

References getBitcodeModuleImpl(), and llvm::MipsISD::Ret.

Referenced by llvm::getLazyBitcodeModule(), and llvm::parseBitcodeFile().

static bool hasImplicitComdat ( size_t  Val)
static

Definition at line 505 of file BitcodeReader.cpp.

static APInt readWideAPInt ( ArrayRef< uint64_t >  Vals,
unsigned  TypeBits 
)
static
static std::error_code typeCheckLoadStoreInst ( DiagnosticHandlerFunction  DH,
Type ValType,
Type PtrType 
)
static

Definition at line 3306 of file BitcodeReader.cpp.

References error().

static int64_t unrotateSign ( uint64_t  U)
static

Definition at line 1591 of file BitcodeReader.cpp.

static void upgradeDLLImportExportLinkage ( llvm::GlobalValue GV,
unsigned  Val 
)
static

Definition at line 715 of file BitcodeReader.cpp.

References llvm::GlobalValue::setDLLStorageClass().

Variable Documentation

ManagedStatic<BitcodeErrorCategoryType> ErrorCategory
static

Definition at line 4643 of file BitcodeReader.cpp.

Referenced by llvm::BitcodeErrorCategory().