[llvm-commits] CVS: llvm/lib/VMCore/Function.cpp Instructions.cpp
Reid Spencer
reid at x10sys.com
Sun Apr 22 10:28:25 PDT 2007
Changes in directory llvm/lib/VMCore:
Function.cpp updated: 1.125 -> 1.126
Instructions.cpp updated: 1.88 -> 1.89
---
Log message:
For PR1136: http://llvm.org/PR1136 :
Add reference counting to ParamAttrsList and make use of it in Function,
CallInst and InvokeInst classes.
---
Diffs of the changes: (+40 -0)
Function.cpp | 18 ++++++++++++++++++
Instructions.cpp | 22 ++++++++++++++++++++++
2 files changed, 40 insertions(+)
Index: llvm/lib/VMCore/Function.cpp
diff -u llvm/lib/VMCore/Function.cpp:1.125 llvm/lib/VMCore/Function.cpp:1.126
--- llvm/lib/VMCore/Function.cpp:1.125 Sun Apr 22 00:46:44 2007
+++ llvm/lib/VMCore/Function.cpp Sun Apr 22 12:28:03 2007
@@ -129,6 +129,10 @@
return PAL;
}
+ParamAttrsList::~ParamAttrsList() {
+ ParamAttrsLists->RemoveNode(this);
+}
+
//===----------------------------------------------------------------------===//
// Function Implementation
//===----------------------------------------------------------------------===//
@@ -162,6 +166,10 @@
// Delete all of the method arguments and unlink from symbol table...
ArgumentList.clear();
delete SymTab;
+
+ // Drop our reference to the parameter attributes, if any.
+ if (ParamAttrs)
+ ParamAttrs->dropRef();
}
void Function::setParent(Module *parent) {
@@ -172,6 +180,16 @@
LeakDetector::removeGarbageObject(this);
}
+void Function::setParamAttrs(ParamAttrsList *attrs) {
+ if (ParamAttrs)
+ ParamAttrs->dropRef();
+
+ if (attrs)
+ attrs->addRef();
+
+ ParamAttrs = attrs;
+}
+
const FunctionType *Function::getFunctionType() const {
return cast<FunctionType>(getType()->getElementType());
}
Index: llvm/lib/VMCore/Instructions.cpp
diff -u llvm/lib/VMCore/Instructions.cpp:1.88 llvm/lib/VMCore/Instructions.cpp:1.89
--- llvm/lib/VMCore/Instructions.cpp:1.88 Sun Apr 22 00:46:44 2007
+++ llvm/lib/VMCore/Instructions.cpp Sun Apr 22 12:28:03 2007
@@ -186,6 +186,8 @@
CallInst::~CallInst() {
delete [] OperandList;
+ if (ParamAttrs)
+ ParamAttrs->dropRef();
}
void CallInst::init(Value *Func, Value* const *Params, unsigned NumParams) {
@@ -346,6 +348,15 @@
OL[i].init(InOL[i], this);
}
+void CallInst::setParamAttrs(ParamAttrsList *newAttrs) {
+ if (ParamAttrs)
+ ParamAttrs->dropRef();
+
+ if (newAttrs)
+ newAttrs->addRef();
+
+ ParamAttrs = newAttrs;
+}
//===----------------------------------------------------------------------===//
// InvokeInst Implementation
@@ -353,6 +364,8 @@
InvokeInst::~InvokeInst() {
delete [] OperandList;
+ if (ParamAttrs)
+ ParamAttrs->dropRef();
}
void InvokeInst::init(Value *Fn, BasicBlock *IfNormal, BasicBlock *IfException,
@@ -422,6 +435,15 @@
return setSuccessor(idx, B);
}
+void InvokeInst::setParamAttrs(ParamAttrsList *newAttrs) {
+ if (ParamAttrs)
+ ParamAttrs->dropRef();
+
+ if (newAttrs)
+ newAttrs->addRef();
+
+ ParamAttrs = newAttrs;
+}
//===----------------------------------------------------------------------===//
// ReturnInst Implementation
More information about the llvm-commits
mailing list