//===- TransformInternals.cpp - Implement shared functions for transforms -===//
-//
+//
// The LLVM Compiler Infrastructure
//
// This file was developed by the LLVM research group and is distributed under
// the University of Illinois Open Source License. See LICENSE.TXT for details.
-//
+//
//===----------------------------------------------------------------------===//
//
// This file defines shared functions used by the different components of the
#include "TransformInternals.h"
#include "llvm/Type.h"
-#include "llvm/Analysis/Expressions.h"
#include "llvm/Function.h"
#include "llvm/Instructions.h"
using namespace llvm;
for (i = 0; i < SL->MemberOffsets.size()-1; ++i)
if (Offset >= SL->MemberOffsets[i] && Offset < SL->MemberOffsets[i+1])
break;
-
+
assert(Offset >= SL->MemberOffsets[i] &&
(i == SL->MemberOffsets.size()-1 || Offset < SL->MemberOffsets[i+1]));
-
+
// Make sure to save the current index...
- Indices.push_back(ConstantUInt::get(Type::UIntTy, i));
+ Indices.push_back(ConstantInt::get(Type::UIntTy, i));
Offset = SL->MemberOffsets[i];
return STy->getContainedType(i);
}
"Offset not in composite!");
NextType = ATy->getElementType();
- unsigned ChildSize = TD.getTypeSize(NextType);
- if (ConstantSInt::isValueValidForType(Type::IntTy, Offset/ChildSize))
- Indices.push_back(ConstantSInt::get(Type::IntTy, Offset/ChildSize));
+ unsigned ChildSize = (unsigned)TD.getTypeSize(NextType);
+ if (ConstantInt::isValueValidForType(Type::IntTy,
+ uint64_t(Offset/ChildSize)))
+ Indices.push_back(ConstantInt::get(Type::IntTy, Offset/ChildSize));
else
- Indices.push_back(ConstantSInt::get(Type::LongTy, Offset/ChildSize));
+ Indices.push_back(ConstantInt::get(Type::LongTy, Offset/ChildSize));
ThisOffset = (Offset/ChildSize)*ChildSize;
} else {
Offset = 0; // Return the offset that we were able to achieve
return Ty; // Return the leaf type
}
- unsigned SubOffs = Offset - ThisOffset;
+ unsigned SubOffs = unsigned(Offset - ThisOffset);
const Type *LeafTy = getStructOffsetType(NextType, SubOffs,
Indices, TD, StopEarly);
- Offset = ThisOffset + SubOffs;
+ Offset = unsigned(ThisOffset + SubOffs);
return LeafTy;
}
-
-// ConvertibleToGEP - This function returns true if the specified value V is
-// a valid index into a pointer of type Ty. If it is valid, Idx is filled in
-// with the values that would be appropriate to make this a getelementptr
-// instruction. The type returned is the root type that the GEP would point to
-//
-const Type *llvm::ConvertibleToGEP(const Type *Ty, Value *OffsetVal,
- std::vector<Value*> &Indices,
- const TargetData &TD,
- BasicBlock::iterator *BI) {
- return 0;
-}
-