aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/llvm/ConstPoolVals.h5
-rw-r--r--include/llvm/GlobalVariable.h9
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