diff options
-rw-r--r-- | include/llvm/ConstPoolVals.h | 5 | ||||
-rw-r--r-- | include/llvm/GlobalVariable.h | 9 |
2 files changed, 9 insertions, 5 deletions
diff --git a/include/llvm/ConstPoolVals.h b/include/llvm/ConstPoolVals.h index 68dd0a3acf..235ab12f26 100644 --- a/include/llvm/ConstPoolVals.h +++ b/include/llvm/ConstPoolVals.h @@ -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; }; diff --git a/include/llvm/GlobalVariable.h b/include/llvm/GlobalVariable.h index 4256ffee94..6d6de14146 100644 --- a/include/llvm/GlobalVariable.h +++ b/include/llvm/GlobalVariable.h @@ -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 |