summaryrefslogtreecommitdiffstats
path: root/clang/lib/AST/Expr.cpp
diff options
context:
space:
mode:
authorNate Begeman <natebegeman@mac.com>2009-08-12 02:28:50 +0000
committerNate Begeman <natebegeman@mac.com>2009-08-12 02:28:50 +0000
commit4874592208e40182ccf731e563d0d1356c935702 (patch)
tree79cfcbca9f649296c49eb0ffdc8eb0093745d936 /clang/lib/AST/Expr.cpp
parent0d375cdcb197bbc132504683be1ff83387bb34b3 (diff)
downloadbcm5719-llvm-4874592208e40182ccf731e563d0d1356c935702.tar.gz
bcm5719-llvm-4874592208e40182ccf731e563d0d1356c935702.zip
Transition the PCH support for ShuffleVectorExpr over to ASTContext allocation
llvm-svn: 78783
Diffstat (limited to 'clang/lib/AST/Expr.cpp')
-rw-r--r--clang/lib/AST/Expr.cpp17
1 files changed, 12 insertions, 5 deletions
diff --git a/clang/lib/AST/Expr.cpp b/clang/lib/AST/Expr.cpp
index ce8bb516c09..cfcbca47301 100644
--- a/clang/lib/AST/Expr.cpp
+++ b/clang/lib/AST/Expr.cpp
@@ -1596,13 +1596,20 @@ bool ChooseExpr::isConditionTrue(ASTContext &C) const {
return getCond()->EvaluateAsInt(C) != 0;
}
-void ShuffleVectorExpr::setExprs(Expr ** Exprs, unsigned NumExprs) {
- if (NumExprs)
- delete [] SubExprs;
-
- SubExprs = new Stmt* [NumExprs];
+void ShuffleVectorExpr::setExprs(ASTContext &C, Expr ** Exprs,
+ unsigned NumExprs) {
+ if (SubExprs) C.Deallocate(SubExprs);
+
+ SubExprs = new (C) Stmt* [NumExprs];
this->NumExprs = NumExprs;
memcpy(SubExprs, Exprs, sizeof(Expr *) * NumExprs);
+}
+
+void ShuffleVectorExpr::DoDestroy(ASTContext& C) {
+ DestroyChildren(C);
+ if (SubExprs) C.Deallocate(SubExprs);
+ this->~ShuffleVectorExpr();
+ C.Deallocate(this);
}
void SizeOfAlignOfExpr::DoDestroy(ASTContext& C) {
OpenPOWER on IntegriCloud