diff --git a/AST/Expr.cpp b/AST/Expr.cpp
index e814d58..94d99ab 100644
--- a/AST/Expr.cpp
+++ b/AST/Expr.cpp
@@ -88,6 +88,36 @@
   RParenLoc = rparenloc;
 }
 
+/// setNumArgs - This changes the number of arguments present in this call.
+/// Any orphaned expressions are deleted by this, and any new operands are set
+/// to null.
+void CallExpr::setNumArgs(unsigned NumArgs) {
+  // No change, just return.
+  if (NumArgs == getNumArgs()) return;
+  
+  // If shrinking # arguments, just delete the extras and forgot them.
+  if (NumArgs < getNumArgs()) {
+    for (unsigned i = NumArgs, e = getNumArgs(); i != e; ++i)
+      delete getArg(i);
+    this->NumArgs = NumArgs;
+    return;
+  }
+
+  // Otherwise, we are growing the # arguments.  New an bigger argument array.
+  Expr **NewSubExprs = new Expr*[NumArgs+1];
+  // Copy over args.
+  for (unsigned i = 0; i != getNumArgs()+ARGS_START; ++i)
+    NewSubExprs[i] = SubExprs[i];
+  // Null out new args.
+  for (unsigned i = getNumArgs()+ARGS_START; i != NumArgs+ARGS_START; ++i)
+    NewSubExprs[i] = 0;
+  
+  delete[] SubExprs;
+  SubExprs = NewSubExprs;
+  this->NumArgs = NumArgs;
+}
+
+
 bool CallExpr::isBuiltinClassifyType(llvm::APSInt &Result) const {
   // The following enum mimics gcc's internal "typeclass.h" file.
   enum gcc_type_class {
diff --git a/include/clang/AST/Expr.h b/include/clang/AST/Expr.h
index b82db0e..aba11ea 100644
--- a/include/clang/AST/Expr.h
+++ b/include/clang/AST/Expr.h
@@ -585,12 +585,27 @@
     assert(Arg < NumArgs && "Arg access out of range!");
     SubExprs[Arg+ARGS_START] = ArgExpr;
   }
+  
+  /// setNumArgs - This changes the number of arguments present in this call.
+  /// Any orphaned expressions are deleted by this, and any new operands are set
+  /// to null.
+  void setNumArgs(unsigned NumArgs);
+  
+  typedef Expr **arg_iterator;
+  typedef Expr * const *arg_const_iterator;
+  arg_iterator arg_begin() { return SubExprs+ARGS_START; }
+  arg_iterator arg_end() { return SubExprs+ARGS_START+getNumArgs(); }
+  arg_const_iterator arg_begin() const { return SubExprs+ARGS_START; }
+  arg_const_iterator arg_end() const { return SubExprs+ARGS_START+getNumArgs(); }
+  
+  
   /// getNumCommas - Return the number of commas that must have been present in
   /// this function call.
   unsigned getNumCommas() const { return NumArgs ? NumArgs - 1 : 0; }
 
   bool isBuiltinClassifyType(llvm::APSInt &Result) const;
   
+  SourceLocation getRParenLoc() const { return RParenLoc; }
   SourceRange getSourceRange() const { 
     return SourceRange(getCallee()->getLocStart(), RParenLoc);
   }
