[cfe-commits] r64145 - in /cfe/trunk: include/clang/AST/Expr.h lib/AST/Expr.cpp lib/AST/StmtSerialization.cpp lib/Sema/SemaExpr.cpp
Ted Kremenek
kremenek at apple.com
Mon Feb 9 09:08:15 PST 2009
Author: kremenek
Date: Mon Feb 9 11:08:14 2009
New Revision: 64145
URL: http://llvm.org/viewvc/llvm-project?rev=64145&view=rev
Log:
Allocate the subexpression array for OberloadExpr from ASTContext's allocator.
Modified:
cfe/trunk/include/clang/AST/Expr.h
cfe/trunk/lib/AST/Expr.cpp
cfe/trunk/lib/AST/StmtSerialization.cpp
cfe/trunk/lib/Sema/SemaExpr.cpp
Modified: cfe/trunk/include/clang/AST/Expr.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/AST/Expr.h?rev=64145&r1=64144&r2=64145&view=diff
==============================================================================
--- cfe/trunk/include/clang/AST/Expr.h (original)
+++ cfe/trunk/include/clang/AST/Expr.h Mon Feb 9 11:08:14 2009
@@ -1533,17 +1533,18 @@
SourceLocation BuiltinLoc;
SourceLocation RParenLoc;
public:
- OverloadExpr(Expr **args, unsigned nexprs, unsigned idx, QualType t,
- SourceLocation bloc, SourceLocation rploc)
+ OverloadExpr(ASTContext& C, Expr **args, unsigned nexprs, unsigned idx,
+ QualType t, SourceLocation bloc, SourceLocation rploc)
: Expr(OverloadExprClass, t), NumExprs(nexprs), FnIndex(idx),
BuiltinLoc(bloc), RParenLoc(rploc) {
- SubExprs = new Stmt*[nexprs];
+ SubExprs = new (C) Stmt*[nexprs];
for (unsigned i = 0; i != nexprs; ++i)
SubExprs[i] = args[i];
}
- ~OverloadExpr() {
- delete [] SubExprs;
- }
+
+ ~OverloadExpr() {}
+
+ void Destroy(ASTContext& C);
/// arg_begin - Return a pointer to the list of arguments that will be passed
/// to the matching candidate function, skipping over the initial constant
Modified: cfe/trunk/lib/AST/Expr.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/Expr.cpp?rev=64145&r1=64144&r2=64145&view=diff
==============================================================================
--- cfe/trunk/lib/AST/Expr.cpp (original)
+++ cfe/trunk/lib/AST/Expr.cpp Mon Feb 9 11:08:14 2009
@@ -1410,6 +1410,13 @@
Expr::Destroy(C);
}
+void OverloadExpr::Destroy(ASTContext& C) {
+ DestroyChildren(C);
+ C.Deallocate(SubExprs);
+ this->~OverloadExpr();
+ C.Deallocate(this);
+}
+
//===----------------------------------------------------------------------===//
// DesignatedInitExpr
//===----------------------------------------------------------------------===//
Modified: cfe/trunk/lib/AST/StmtSerialization.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/StmtSerialization.cpp?rev=64145&r1=64144&r2=64145&view=diff
==============================================================================
--- cfe/trunk/lib/AST/StmtSerialization.cpp (original)
+++ cfe/trunk/lib/AST/StmtSerialization.cpp Mon Feb 9 11:08:14 2009
@@ -937,7 +937,7 @@
// FIXME: Avoid extra allocation.
llvm::SmallVector<Expr*, 4> Exprs(NumExprs);
D.BatchReadOwnedPtrs(NumExprs, Exprs.begin(), C);
- return new OverloadExpr(Exprs.begin(), NumExprs, FnIndex, T, BL, RP);
+ return new OverloadExpr(C, Exprs.begin(), NumExprs, FnIndex, T, BL, RP);
}
void VAArgExpr::EmitImpl(llvm::Serializer& S) const {
Modified: cfe/trunk/lib/Sema/SemaExpr.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaExpr.cpp?rev=64145&r1=64144&r2=64145&view=diff
==============================================================================
--- cfe/trunk/lib/Sema/SemaExpr.cpp (original)
+++ cfe/trunk/lib/Sema/SemaExpr.cpp Mon Feb 9 11:08:14 2009
@@ -4369,7 +4369,7 @@
<< OE->getFn()->getSourceRange();
// Remember our match, and continue processing the remaining arguments
// to catch any errors.
- OE = new (Context) OverloadExpr(Args, NumArgs, i,
+ OE = new (Context) OverloadExpr(Context, Args, NumArgs, i,
FnType->getResultType().getNonReferenceType(),
BuiltinLoc, RParenLoc);
}
More information about the cfe-commits
mailing list