add a typedef

llvm-svn: 34159
This commit is contained in:
Chris Lattner 2007-02-10 20:18:06 +00:00
parent e472f9c4dc
commit 22206711c9
1 changed files with 8 additions and 9 deletions

View File

@ -208,17 +208,18 @@ TargetData::TargetData(const Module *M) {
/// targets with cached elements should have been destroyed.
///
typedef std::pair<const TargetData*,const StructType*> LayoutKey;
static ManagedStatic<std::map<LayoutKey, StructLayout*> > LayoutInfo;
typedef std::map<LayoutKey, StructLayout*> LayoutInfoTy;
static ManagedStatic<LayoutInfoTy> LayoutInfo;
TargetData::~TargetData() {
if (LayoutInfo.isConstructed()) {
// Remove any layouts for this TD.
std::map<LayoutKey, StructLayout*> &TheMap = *LayoutInfo;
std::map<LayoutKey, StructLayout*>::iterator
LayoutInfoTy &TheMap = *LayoutInfo;
LayoutInfoTy::iterator
I = TheMap.lower_bound(LayoutKey(this, (const StructType*)0));
for (std::map<LayoutKey, StructLayout*>::iterator E = TheMap.end();
for (LayoutInfoTy::iterator E = TheMap.end();
I != E && I->first.first == this; ) {
I->second->~StructLayout();
free(I->second);
@ -228,10 +229,9 @@ TargetData::~TargetData() {
}
const StructLayout *TargetData::getStructLayout(const StructType *Ty) const {
std::map<LayoutKey, StructLayout*> &TheMap = *LayoutInfo;
LayoutInfoTy &TheMap = *LayoutInfo;
std::map<LayoutKey, StructLayout*>::iterator
I = TheMap.lower_bound(LayoutKey(this, Ty));
LayoutInfoTy::iterator I = TheMap.lower_bound(LayoutKey(this, Ty));
if (I != TheMap.end() && I->first.first == this && I->first.second == Ty)
return I->second;
@ -253,8 +253,7 @@ const StructLayout *TargetData::getStructLayout(const StructType *Ty) const {
void TargetData::InvalidateStructLayoutInfo(const StructType *Ty) const {
if (!LayoutInfo.isConstructed()) return; // No cache.
std::map<LayoutKey, StructLayout*>::iterator I =
LayoutInfo->find(LayoutKey(this, Ty));
LayoutInfoTy::iterator I = LayoutInfo->find(LayoutKey(this, Ty));
if (I != LayoutInfo->end()) {
I->second->~StructLayout();
free(I->second);