[llvm-commits] [llvm] r161371 - in /llvm/trunk: include/llvm/Target/TargetData.h lib/Target/TargetData.cpp

David Blaikie dblaikie at gmail.com
Mon Aug 6 21:41:25 PDT 2012


On Mon, Aug 6, 2012 at 5:26 PM, Bill Wendling <isanbard at gmail.com> wrote:
> Author: void
> Date: Mon Aug  6 19:26:35 2012
> New Revision: 161371
>
> URL: http://llvm.org/viewvc/llvm-project?rev=161371&view=rev
> Log:
> Constify the Type parameter to some methods (which are const anyway).

FWIW we /removed/ the const from llvm::Types after the great Type
rewrite of 3.0 because Types can be nothing other than const (they
have no non-const public members) so it's  just redundant/verbose.

(while I don't necessarily agree with this attitude, it was Chris's
preference & I made the patches to make the conversion)

http://llvm.org/viewvc/llvm-project?view=rev&revision=135375

>
> Modified:
>     llvm/trunk/include/llvm/Target/TargetData.h
>     llvm/trunk/lib/Target/TargetData.cpp
>
> Modified: llvm/trunk/include/llvm/Target/TargetData.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Target/TargetData.h?rev=161371&r1=161370&r2=161371&view=diff
> ==============================================================================
> --- llvm/trunk/include/llvm/Target/TargetData.h (original)
> +++ llvm/trunk/include/llvm/Target/TargetData.h Mon Aug  6 19:26:35 2012
> @@ -100,9 +100,9 @@
>    void setAlignment(AlignTypeEnum align_type, unsigned abi_align,
>                      unsigned pref_align, uint32_t bit_width);
>    unsigned getAlignmentInfo(AlignTypeEnum align_type, uint32_t bit_width,
> -                            bool ABIAlign, Type *Ty) const;
> +                            bool ABIAlign, const Type *Ty) const;
>    //! Internal helper method that returns requested alignment for type.
> -  unsigned getAlignment(Type *Ty, bool abi_or_pref) const;
> +  unsigned getAlignment(const Type *Ty, bool abi_or_pref) const;
>
>    /// Valid alignment predicate.
>    ///
> @@ -223,19 +223,19 @@
>
>    /// getTypeSizeInBits - Return the number of bits necessary to hold the
>    /// specified type.  For example, returns 36 for i36 and 80 for x86_fp80.
> -  uint64_t getTypeSizeInBits(Type* Ty) const;
> +  uint64_t getTypeSizeInBits(const Type* Ty) const;
>
>    /// getTypeStoreSize - Return the maximum number of bytes that may be
>    /// overwritten by storing the specified type.  For example, returns 5
>    /// for i36 and 10 for x86_fp80.
> -  uint64_t getTypeStoreSize(Type *Ty) const {
> +  uint64_t getTypeStoreSize(const Type *Ty) const {
>      return (getTypeSizeInBits(Ty)+7)/8;
>    }
>
>    /// getTypeStoreSizeInBits - Return the maximum number of bits that may be
>    /// overwritten by storing the specified type; always a multiple of 8.  For
>    /// example, returns 40 for i36 and 80 for x86_fp80.
> -  uint64_t getTypeStoreSizeInBits(Type *Ty) const {
> +  uint64_t getTypeStoreSizeInBits(const Type *Ty) const {
>      return 8*getTypeStoreSize(Ty);
>    }
>
> @@ -243,7 +243,7 @@
>    /// of the specified type, including alignment padding.  This is the amount
>    /// that alloca reserves for this type.  For example, returns 12 or 16 for
>    /// x86_fp80, depending on alignment.
> -  uint64_t getTypeAllocSize(Type* Ty) const {
> +  uint64_t getTypeAllocSize(const Type* Ty) const {
>      // Round up to the next alignment boundary.
>      return RoundUpAlignment(getTypeStoreSize(Ty), getABITypeAlignment(Ty));
>    }
> @@ -252,13 +252,13 @@
>    /// objects of the specified type, including alignment padding; always a
>    /// multiple of 8.  This is the amount that alloca reserves for this type.
>    /// For example, returns 96 or 128 for x86_fp80, depending on alignment.
> -  uint64_t getTypeAllocSizeInBits(Type* Ty) const {
> +  uint64_t getTypeAllocSizeInBits(const Type* Ty) const {
>      return 8*getTypeAllocSize(Ty);
>    }
>
>    /// getABITypeAlignment - Return the minimum ABI-required alignment for the
>    /// specified type.
> -  unsigned getABITypeAlignment(Type *Ty) const;
> +  unsigned getABITypeAlignment(const Type *Ty) const;
>
>    /// getABIIntegerTypeAlignment - Return the minimum ABI-required alignment for
>    /// an integer type of the specified bitwidth.
> @@ -267,17 +267,17 @@
>
>    /// getCallFrameTypeAlignment - Return the minimum ABI-required alignment
>    /// for the specified type when it is part of a call frame.
> -  unsigned getCallFrameTypeAlignment(Type *Ty) const;
> +  unsigned getCallFrameTypeAlignment(const Type *Ty) const;
>
>
>    /// getPrefTypeAlignment - Return the preferred stack/global alignment for
>    /// the specified type.  This is always at least as good as the ABI alignment.
> -  unsigned getPrefTypeAlignment(Type *Ty) const;
> +  unsigned getPrefTypeAlignment(const Type *Ty) const;
>
>    /// getPreferredTypeAlignmentShift - Return the preferred alignment for the
>    /// specified type, returned as log2 of the value (a shift amount).
>    ///
> -  unsigned getPreferredTypeAlignmentShift(Type *Ty) const;
> +  unsigned getPreferredTypeAlignmentShift(const Type *Ty) const;
>
>    /// getIntPtrType - Return an unsigned integer type that is the same size or
>    /// greater to the host pointer size.
> @@ -292,7 +292,7 @@
>    /// getStructLayout - Return a StructLayout object, indicating the alignment
>    /// of the struct, its size, and the offsets of its fields.  Note that this
>    /// information is lazily cached.
> -  const StructLayout *getStructLayout(StructType *Ty) const;
> +  const StructLayout *getStructLayout(const StructType *Ty) const;
>
>    /// getPreferredAlignment - Return the preferred alignment of the specified
>    /// global.  This includes an explicitly requested alignment (if the global
> @@ -355,7 +355,7 @@
>
>  private:
>    friend class TargetData;   // Only TargetData can create this class
> -  StructLayout(StructType *ST, const TargetData &TD);
> +  StructLayout(const StructType *ST, const TargetData &TD);
>  };
>
>  } // End llvm namespace
>
> Modified: llvm/trunk/lib/Target/TargetData.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/TargetData.cpp?rev=161371&r1=161370&r2=161371&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/TargetData.cpp (original)
> +++ llvm/trunk/lib/Target/TargetData.cpp Mon Aug  6 19:26:35 2012
> @@ -41,7 +41,7 @@
>  // Support for StructLayout
>  //===----------------------------------------------------------------------===//
>
> -StructLayout::StructLayout(StructType *ST, const TargetData &TD) {
> +StructLayout::StructLayout(const StructType *ST, const TargetData &TD) {
>    assert(!ST->isOpaque() && "Cannot get layout of opaque structs");
>    StructAlignment = 0;
>    StructSize = 0;
> @@ -332,7 +332,7 @@
>  /// preferred if ABIInfo = false) the target wants for the specified datatype.
>  unsigned TargetData::getAlignmentInfo(AlignTypeEnum AlignType,
>                                        uint32_t BitWidth, bool ABIInfo,
> -                                      Type *Ty) const {
> +                                      const Type *Ty) const {
>    // Check to see if we have an exact match and remember the best match we see.
>    int BestMatchIdx = -1;
>    int LargestInt = -1;
> @@ -386,7 +386,7 @@
>  namespace {
>
>  class StructLayoutMap {
> -  typedef DenseMap<StructType*, StructLayout*> LayoutInfoTy;
> +  typedef DenseMap<const StructType*, StructLayout*> LayoutInfoTy;
>    LayoutInfoTy LayoutInfo;
>
>  public:
> @@ -400,7 +400,7 @@
>      }
>    }
>
> -  StructLayout *&operator[](StructType *STy) {
> +  StructLayout *&operator[](const StructType *STy) {
>      return LayoutInfo[STy];
>    }
>
> @@ -414,7 +414,7 @@
>    delete static_cast<StructLayoutMap*>(LayoutMap);
>  }
>
> -const StructLayout *TargetData::getStructLayout(StructType *Ty) const {
> +const StructLayout *TargetData::getStructLayout(const StructType *Ty) const {
>    if (!LayoutMap)
>      LayoutMap = new StructLayoutMap();
>
> @@ -462,14 +462,14 @@
>  }
>
>
> -uint64_t TargetData::getTypeSizeInBits(Type *Ty) const {
> +uint64_t TargetData::getTypeSizeInBits(const Type *Ty) const {
>    assert(Ty->isSized() && "Cannot getTypeInfo() on a type that is unsized!");
>    switch (Ty->getTypeID()) {
>    case Type::LabelTyID:
>    case Type::PointerTyID:
>      return getPointerSizeInBits();
>    case Type::ArrayTyID: {
> -    ArrayType *ATy = cast<ArrayType>(Ty);
> +    const ArrayType *ATy = cast<ArrayType>(Ty);
>      return getTypeAllocSizeInBits(ATy->getElementType())*ATy->getNumElements();
>    }
>    case Type::StructTyID:
> @@ -508,7 +508,7 @@
>    Get the ABI (\a abi_or_pref == true) or preferred alignment (\a abi_or_pref
>    == false) for the requested type \a Ty.
>   */
> -unsigned TargetData::getAlignment(Type *Ty, bool abi_or_pref) const {
> +unsigned TargetData::getAlignment(const Type *Ty, bool abi_or_pref) const {
>    int AlignType = -1;
>
>    assert(Ty->isSized() && "Cannot getTypeInfo() on a type that is unsized!");
> @@ -558,7 +558,7 @@
>                            abi_or_pref, Ty);
>  }
>
> -unsigned TargetData::getABITypeAlignment(Type *Ty) const {
> +unsigned TargetData::getABITypeAlignment(const Type *Ty) const {
>    return getAlignment(Ty, true);
>  }
>
> @@ -569,7 +569,7 @@
>  }
>
>
> -unsigned TargetData::getCallFrameTypeAlignment(Type *Ty) const {
> +unsigned TargetData::getCallFrameTypeAlignment(const Type *Ty) const {
>    for (unsigned i = 0, e = Alignments.size(); i != e; ++i)
>      if (Alignments[i].AlignType == STACK_ALIGN)
>        return Alignments[i].ABIAlign;
> @@ -577,11 +577,11 @@
>    return getABITypeAlignment(Ty);
>  }
>
> -unsigned TargetData::getPrefTypeAlignment(Type *Ty) const {
> +unsigned TargetData::getPrefTypeAlignment(const Type *Ty) const {
>    return getAlignment(Ty, false);
>  }
>
> -unsigned TargetData::getPreferredTypeAlignmentShift(Type *Ty) const {
> +unsigned TargetData::getPreferredTypeAlignmentShift(const Type *Ty) const {
>    unsigned Align = getPrefTypeAlignment(Ty);
>    assert(!(Align & (Align-1)) && "Alignment is not a power of two!");
>    return Log2_32(Align);
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits



More information about the llvm-commits mailing list