mirror of
https://github.com/obfuscator-llvm/obfuscator
synced 2026-06-08 16:28:34 +00:00
Initial commit of LLVM 3.4
This commit is contained in:
+17
-9
@@ -200,9 +200,7 @@ static unsigned inBytes(unsigned Bits) {
|
||||
}
|
||||
|
||||
void DataLayout::parseSpecifier(StringRef Desc) {
|
||||
|
||||
while (!Desc.empty()) {
|
||||
|
||||
// Split at '-'.
|
||||
std::pair<StringRef, StringRef> Split = split(Desc, '-');
|
||||
Desc = Split.second;
|
||||
@@ -482,7 +480,7 @@ std::string DataLayout::getStringRepresentation() const {
|
||||
addrSpaces.push_back(pib->first);
|
||||
}
|
||||
std::sort(addrSpaces.begin(), addrSpaces.end());
|
||||
for (SmallVector<unsigned, 8>::iterator asb = addrSpaces.begin(),
|
||||
for (SmallVectorImpl<unsigned>::iterator asb = addrSpaces.begin(),
|
||||
ase = addrSpaces.end(); asb != ase; ++asb) {
|
||||
const PointerAlignElem &PI = Pointers.find(*asb)->second;
|
||||
OS << "-p";
|
||||
@@ -509,6 +507,15 @@ std::string DataLayout::getStringRepresentation() const {
|
||||
return OS.str();
|
||||
}
|
||||
|
||||
unsigned DataLayout::getPointerTypeSizeInBits(Type *Ty) const {
|
||||
assert(Ty->isPtrOrPtrVectorTy() &&
|
||||
"This should only be called with a pointer or pointer vector type");
|
||||
|
||||
if (Ty->isPointerTy())
|
||||
return getTypeSizeInBits(Ty);
|
||||
|
||||
return getTypeSizeInBits(Ty->getScalarType());
|
||||
}
|
||||
|
||||
/*!
|
||||
\param abi_or_pref Flag that determines which alignment is returned. true
|
||||
@@ -582,7 +589,6 @@ unsigned DataLayout::getABIIntegerTypeAlignment(unsigned BitWidth) const {
|
||||
return getAlignmentInfo(INTEGER_ALIGN, BitWidth, true, 0);
|
||||
}
|
||||
|
||||
|
||||
unsigned DataLayout::getCallFrameTypeAlignment(Type *Ty) const {
|
||||
for (unsigned i = 0, e = Alignments.size(); i != e; ++i)
|
||||
if (Alignments[i].AlignType == STACK_ALIGN)
|
||||
@@ -601,16 +607,11 @@ unsigned DataLayout::getPreferredTypeAlignmentShift(Type *Ty) const {
|
||||
return Log2_32(Align);
|
||||
}
|
||||
|
||||
/// getIntPtrType - Return an integer type with size at least as big as that
|
||||
/// of a pointer in the given address space.
|
||||
IntegerType *DataLayout::getIntPtrType(LLVMContext &C,
|
||||
unsigned AddressSpace) const {
|
||||
return IntegerType::get(C, getPointerSizeInBits(AddressSpace));
|
||||
}
|
||||
|
||||
/// getIntPtrType - Return an integer (vector of integer) type with size at
|
||||
/// least as big as that of a pointer of the given pointer (vector of pointer)
|
||||
/// type.
|
||||
Type *DataLayout::getIntPtrType(Type *Ty) const {
|
||||
assert(Ty->isPtrOrPtrVectorTy() &&
|
||||
"Expected a pointer or pointer vector type.");
|
||||
@@ -628,6 +629,13 @@ Type *DataLayout::getSmallestLegalIntType(LLVMContext &C, unsigned Width) const
|
||||
return 0;
|
||||
}
|
||||
|
||||
unsigned DataLayout::getLargestLegalIntTypeSize() const {
|
||||
unsigned MaxWidth = 0;
|
||||
for (unsigned i = 0, e = (unsigned)LegalIntWidths.size(); i != e; ++i)
|
||||
MaxWidth = std::max<unsigned>(MaxWidth, LegalIntWidths[i]);
|
||||
return MaxWidth;
|
||||
}
|
||||
|
||||
uint64_t DataLayout::getIndexedOffset(Type *ptrTy,
|
||||
ArrayRef<Value *> Indices) const {
|
||||
Type *Ty = ptrTy;
|
||||
|
||||
Reference in New Issue
Block a user