LLVM 19.0.0git
Functions | Variables
DataLayout.cpp File Reference
#include "llvm/IR/DataLayout.h"
#include "llvm/ADT/DenseMap.h"
#include "llvm/ADT/StringRef.h"
#include "llvm/IR/Constants.h"
#include "llvm/IR/DerivedTypes.h"
#include "llvm/IR/GetElementPtrTypeIterator.h"
#include "llvm/IR/GlobalVariable.h"
#include "llvm/IR/Module.h"
#include "llvm/IR/Type.h"
#include "llvm/IR/Value.h"
#include "llvm/Support/Casting.h"
#include "llvm/Support/Error.h"
#include "llvm/Support/ErrorHandling.h"
#include "llvm/Support/MathExtras.h"
#include "llvm/Support/MemAlloc.h"
#include "llvm/Support/TypeSize.h"
#include "llvm/TargetParser/Triple.h"
#include <algorithm>
#include <cassert>
#include <cstdint>
#include <cstdlib>
#include <new>
#include <utility>

Go to the source code of this file.

Functions

static Error reportError (const Twine &Message)
 
static Error split (StringRef Str, char Separator, std::pair< StringRef, StringRef > &Split)
 Checked version of split, to ensure mandatory subparts.
 
template<typename IntTy >
static Error getInt (StringRef R, IntTy &Result)
 Get an unsigned integer, including error checks.
 
template<typename IntTy >
static Error getIntInBytes (StringRef R, IntTy &Result)
 Get an unsigned integer representing the number of bits and convert it into bytes.
 
static Error getAddrSpace (StringRef R, unsigned &AddrSpace)
 
static SmallVectorImpl< LayoutAlignElem >::const_iterator findAlignmentLowerBound (const SmallVectorImpl< LayoutAlignElem > &Alignments, uint32_t BitWidth)
 
static APInt getElementIndex (TypeSize ElemSize, APInt &Offset)
 

Variables

static const std::pair< AlignTypeEnum, LayoutAlignElemDefaultAlignments []
 

Function Documentation

◆ findAlignmentLowerBound()

static SmallVectorImpl< LayoutAlignElem >::const_iterator findAlignmentLowerBound ( const SmallVectorImpl< LayoutAlignElem > &  Alignments,
uint32_t  BitWidth 
)
static

Definition at line 579 of file DataLayout.cpp.

References llvm::BitWidth, E, and llvm::partition_point().

◆ getAddrSpace()

static Error getAddrSpace ( StringRef  R,
unsigned AddrSpace 
)
static

◆ getElementIndex()

static APInt getElementIndex ( TypeSize  ElemSize,
APInt Offset 
)
static

◆ getInt()

template<typename IntTy >
static Error getInt ( StringRef  R,
IntTy &  Result 
)
static

Get an unsigned integer, including error checks.

Definition at line 247 of file DataLayout.cpp.

References error, reportError(), and llvm::Error::success().

Referenced by getAddrSpace().

◆ getIntInBytes()

template<typename IntTy >
static Error getIntInBytes ( StringRef  R,
IntTy &  Result 
)
static

Get an unsigned integer representing the number of bits and convert it into bytes.

Error out of not a byte width multiple.

Definition at line 257 of file DataLayout.cpp.

References reportError(), and llvm::Error::success().

◆ reportError()

static Error reportError ( const Twine Message)
static

Definition at line 230 of file DataLayout.cpp.

References llvm::createStringError(), and llvm::inconvertibleErrorCode().

◆ split()

static Error split ( StringRef  Str,
char  Separator,
std::pair< StringRef, StringRef > &  Split 
)
static

Checked version of split, to ensure mandatory subparts.

Definition at line 235 of file DataLayout.cpp.

References assert(), reportError(), and llvm::Error::success().

Referenced by llvm::StringRef::split().

Variable Documentation

◆ DefaultAlignments

const std::pair<AlignTypeEnum, LayoutAlignElem> DefaultAlignments[]
static
Initial value:
= {
{INTEGER_ALIGN, {1, Align(1), Align(1)}},
{INTEGER_ALIGN, {8, Align(1), Align(1)}},
{INTEGER_ALIGN, {16, Align(2), Align(2)}},
{INTEGER_ALIGN, {32, Align(4), Align(4)}},
{INTEGER_ALIGN, {64, Align(4), Align(8)}},
{FLOAT_ALIGN, {16, Align(2), Align(2)}},
{FLOAT_ALIGN, {32, Align(4), Align(4)}},
{FLOAT_ALIGN, {64, Align(8), Align(8)}},
{FLOAT_ALIGN, {128, Align(16), Align(16)}},
{VECTOR_ALIGN, {64, Align(8), Align(8)}},
{VECTOR_ALIGN, {128, Align(16), Align(16)}},
}
@ FLOAT_ALIGN
Definition: DataLayout.h:57
@ VECTOR_ALIGN
Definition: DataLayout.h:56
@ INTEGER_ALIGN
Definition: DataLayout.h:55
This struct is a compact representation of a valid (non-zero power of two) alignment.
Definition: Alignment.h:39

Definition at line 181 of file DataLayout.cpp.

Referenced by llvm::DataLayout::reset().