Share ConstPoolPointer elements correctly

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@706 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Chris Lattner 2001-10-03 15:38:36 +00:00
parent a861f966fd
commit 7323c69a31
2 changed files with 9 additions and 5 deletions

View File

@ -217,10 +217,7 @@ protected:
ConstPoolPointer(const PointerType *T);
~ConstPoolPointer() {}
public:
static ConstPoolPointer *getNullPointer(const PointerType *T) {
// FIXME: These should all be shared!
return new ConstPoolPointer(T);
}
static ConstPoolPointer *getNull(const PointerType *T);
virtual string getStrValue() const;
};

View File

@ -46,7 +46,14 @@ public:
inline ConstPoolVal *getInitializer() {
return (ConstPoolVal*)Operands[0].get();
}
inline void setInitializer(ConstPoolVal *CPV) { Operands[0] = (Value*)CPV; }
inline void setInitializer(ConstPoolVal *CPV) {
if (CPV == 0) {
if (hasInitializer()) Operands.pop_back();
} else {
if (!hasInitializer()) Operands.push_back(Use(0, this));
Operands[0] = (Value*)CPV;
}
}
// If the value is a global constant, its value is immutable throughout the