From c81493711574375bae500e7c702ca64fc0351e38 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Thu, 26 Feb 2004 08:01:57 +0000 Subject: [PATCH] Make TargetData no longer use annotations! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11874 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/llvm/Target/TargetData.h | 20 ++++++-------------- 1 file changed, 6 insertions(+), 14 deletions(-) diff --git a/include/llvm/Target/TargetData.h b/include/llvm/Target/TargetData.h index cbe70bd662a..dc40efb1abd 100644 --- a/include/llvm/Target/TargetData.h +++ b/include/llvm/Target/TargetData.h @@ -21,9 +21,9 @@ #define LLVM_TARGET_TARGETDATA_H #include "llvm/Pass.h" -#include "Support/Annotation.h" #include "Support/DataTypes.h" #include +#include namespace llvm { @@ -42,9 +42,6 @@ class TargetData : public ImmutablePass { unsigned char DoubleAlignment; // Defaults to 8 bytes unsigned char PointerSize; // Defaults to 8 bytes unsigned char PointerAlignment; // Defaults to 8 bytes - AnnotationID AID; // AID for structure layout annotation - - static Annotation *TypeAnFactory(AnnotationID, const Annotable *, void *); public: TargetData(const std::string &TargetName = "", bool LittleEndian = false, @@ -69,7 +66,6 @@ public: unsigned char getDoubleAlignment() const { return DoubleAlignment; } unsigned char getPointerAlignment() const { return PointerAlignment; } unsigned char getPointerSize() const { return PointerSize; } - AnnotationID getStructLayoutAID() const { return AID; } /// getTypeSize - Return the number of bytes necessary to hold the specified /// type @@ -89,23 +85,19 @@ public: uint64_t getIndexedOffset(const Type *Ty, const std::vector &Indices) const; - inline const StructLayout *getStructLayout(const StructType *Ty) const { - return (const StructLayout*) - ((const Annotable*)Ty)->getOrCreateAnnotation(AID); - } + const StructLayout *getStructLayout(const StructType *Ty) const; }; -// This annotation (attached ONLY to StructType classes) is used to lazily -// calculate structure layout information for a target machine, based on the -// TargetData structure. +// This object is used to lazily calculate structure layout information for a +// target machine, based on the TargetData structure. // -struct StructLayout : public Annotation { +struct StructLayout { std::vector MemberOffsets; uint64_t StructSize; unsigned StructAlignment; private: friend class TargetData; // Only TargetData can create this class - inline StructLayout(const StructType *ST, const TargetData &TD); + StructLayout(const StructType *ST, const TargetData &TD); }; } // End llvm namespace