X-Git-Url: http://plrg.eecs.uci.edu/git/?a=blobdiff_plain;f=lib%2FTransforms%2FTransformInternals.h;h=3b80146a2780c14b28215ca642bd3d8a04952ab6;hb=b89e071aea07022c0240491b380a23958692890c;hp=867dd5d4abea7a293017d215690bc0c42f474cef;hpb=8e2e5f74daf4dfa741634c4b1e2c65d5dcd18c2e;p=oota-llvm.git diff --git a/lib/Transforms/TransformInternals.h b/lib/Transforms/TransformInternals.h index 867dd5d4abe..3b80146a278 100644 --- a/lib/Transforms/TransformInternals.h +++ b/lib/Transforms/TransformInternals.h @@ -1,4 +1,11 @@ -//===-- TransformInternals.h - Shared functions for Transforms ---*- C++ -*--=// +//===-- TransformInternals.h - Shared functions for Transforms --*- C++ -*-===// +// +// 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 header file declares shared functions used by the different components // of the Transforms library. @@ -15,18 +22,10 @@ #include #include -// TargetData Hack: Eventually we will have annotations given to us by the -// backend so that we know stuff about type size and alignments. For now -// though, just use this, because it happens to match the model that GCC uses. -// -// FIXME: This should use annotations -// -extern const TargetData TD; +namespace llvm { static inline int64_t getConstantValue(const ConstantInt *CPI) { - if (const ConstantSInt *CSI = dyn_cast(CPI)) - return CSI->getValue(); - return (int64_t)cast(CPI)->getValue(); + return (int64_t)cast(CPI)->getRawValue(); } @@ -38,7 +37,7 @@ static inline const CompositeType *getPointedToComposite(const Type *Ty) { return PT ? dyn_cast(PT->getElementType()) : 0; } -// ConvertableToGEP - This function returns true if the specified value V is +// 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 @@ -47,8 +46,9 @@ static inline const CompositeType *getPointedToComposite(const Type *Ty) { // If BI is nonnull, cast instructions are inserted as appropriate for the // arguments of the getelementptr. // -const Type *ConvertableToGEP(const Type *Ty, Value *V, +const Type *ConvertibleToGEP(const Type *Ty, Value *V, std::vector &Indices, + const TargetData &TD, BasicBlock::iterator *BI = 0); @@ -103,7 +103,7 @@ struct ValueMapCache { typedef std::map ExprMapTy; // Cast Map - Cast instructions can have their source and destination values - // changed independantly for each part. Because of this, our old naive + // changed independently for each part. Because of this, our old naive // implementation would create a TWO new cast instructions, which would cause // all kinds of problems. Here we keep track of the newly allocated casts, so // that we only create one for a particular instruction. @@ -112,14 +112,18 @@ struct ValueMapCache { }; -bool ExpressionConvertableToType(Value *V, const Type *Ty, ValueTypeCache &Map); -Value *ConvertExpressionToType(Value *V, const Type *Ty, ValueMapCache &VMC); +bool ExpressionConvertibleToType(Value *V, const Type *Ty, ValueTypeCache &Map, + const TargetData &TD); +Value *ConvertExpressionToType(Value *V, const Type *Ty, ValueMapCache &VMC, + const TargetData &TD); -// ValueConvertableToType - Return true if it is possible -bool ValueConvertableToType(Value *V, const Type *Ty, - ValueTypeCache &ConvertedTypes); +// ValueConvertibleToType - Return true if it is possible +bool ValueConvertibleToType(Value *V, const Type *Ty, + ValueTypeCache &ConvertedTypes, + const TargetData &TD); -void ConvertValueToNewType(Value *V, Value *NewVal, ValueMapCache &VMC); +void ConvertValueToNewType(Value *V, Value *NewVal, ValueMapCache &VMC, + const TargetData &TD); // getStructOffsetType - Return a vector of offsets that are to be used to index @@ -135,6 +139,8 @@ void ConvertValueToNewType(Value *V, Value *NewVal, ValueMapCache &VMC); // const Type *getStructOffsetType(const Type *Ty, unsigned &Offset, std::vector &Offsets, - bool StopEarly = true); + const TargetData &TD, bool StopEarly = true); + +} // End llvm namespace #endif