Add a new InvalidateStructLayoutInfo method and some comments.
authorChris Lattner <sabre@nondot.org>
Sat, 14 Jan 2006 00:06:42 +0000 (00:06 +0000)
committerChris Lattner <sabre@nondot.org>
Sat, 14 Jan 2006 00:06:42 +0000 (00:06 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25303 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/Target/TargetData.h

index f07c66bb8656bf89d499c9f8c3092cefb5f2c8cd..1f031f2cc9130a4db759a3acf487c73ec0f45564 100644 (file)
@@ -113,7 +113,16 @@ public:
   uint64_t getIndexedOffset(const Type *Ty,
                             const std::vector<Value*> &Indices) const;
 
+  /// 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(const StructType *Ty) const;
+  
+  /// InvalidateStructLayoutInfo - TargetData speculatively caches StructLayout
+  /// objects.  If a TargetData object is alive when types are being refined and
+  /// removed, this method must be called whenever a StructType is removed to
+  /// avoid a dangling pointer in this cache.
+  void InvalidateStructLayoutInfo(const StructType *Ty) const;
 };
 
 /// StructLayout - used to lazily calculate structure layout information for a