summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDaniel Dunbar <daniel@zuster.org>2009-09-06 01:31:23 +0000
committerDaniel Dunbar <daniel@zuster.org>2009-09-06 01:31:23 +0000
commit94bcae46d5c0481970c126a78ec62487e3dec735 (patch)
treefc90cea1edcf39533251980b4d675365ae8a20a2
parentf87be558cf0e916c944ce1b80d5a2d04cf2a4bfd (diff)
downloadbcm5719-llvm-94bcae46d5c0481970c126a78ec62487e3dec735.tar.gz
bcm5719-llvm-94bcae46d5c0481970c126a78ec62487e3dec735.zip
Revert "Initialize default CXXConstructExpr arguments to 0. Fixes a crash when
destroying the CXXConstructExpr.", this is causing test failures across the board. llvm-svn: 81100
-rw-r--r--clang/lib/AST/ExprCXX.cpp2
-rw-r--r--clang/lib/Sema/SemaDeclCXX.cpp4
-rw-r--r--clang/test/SemaTemplate/default-expr-arguments.cpp5
3 files changed, 3 insertions, 8 deletions
diff --git a/clang/lib/AST/ExprCXX.cpp b/clang/lib/AST/ExprCXX.cpp
index 0cad283cb8d..0ffb1528721 100644
--- a/clang/lib/AST/ExprCXX.cpp
+++ b/clang/lib/AST/ExprCXX.cpp
@@ -403,8 +403,6 @@ CXXConstructExpr::CXXConstructExpr(ASTContext &C, StmtClass SC, QualType T,
Args = new (C) Stmt*[NumArgs];
for (unsigned i = 0; i < numargs; ++i)
Args[i] = args[i];
- for (unsigned i = numargs; i < NumArgs; ++i)
- Args[0] = 0;
}
}
diff --git a/clang/lib/Sema/SemaDeclCXX.cpp b/clang/lib/Sema/SemaDeclCXX.cpp
index 89acfd14d6f..3ee40e842c6 100644
--- a/clang/lib/Sema/SemaDeclCXX.cpp
+++ b/clang/lib/Sema/SemaDeclCXX.cpp
@@ -2899,8 +2899,8 @@ bool Sema::InitializeVarWithConstructor(VarDecl *VD,
QualType DeclInitType,
Expr **Exprs, unsigned NumExprs) {
OwningExprResult TempResult =
- BuildCXXConstructExpr(VD->getLocation(), DeclInitType, Constructor,
- Exprs, NumExprs);
+ BuildCXXConstructExpr(/*FIXME: ConstructLoc*/ SourceLocation(),
+ DeclInitType, Constructor, Exprs, NumExprs);
if (TempResult.isInvalid())
return true;
diff --git a/clang/test/SemaTemplate/default-expr-arguments.cpp b/clang/test/SemaTemplate/default-expr-arguments.cpp
index d689cc86e6b..925d52fb19a 100644
--- a/clang/test/SemaTemplate/default-expr-arguments.cpp
+++ b/clang/test/SemaTemplate/default-expr-arguments.cpp
@@ -20,7 +20,7 @@ void g() {
}
template<typename T> struct F {
- F(T t = 10); // expected-error{{cannot initialize 't' with an rvalue of type 'int'}}
+ F(T t = 10);
void f(T t = 10); // expected-error{{cannot initialize 't' with an rvalue of type 'int'}}
};
@@ -34,9 +34,6 @@ void g2() {
void g3(F<int> f, F<struct S> s) {
f.f();
s.f(); // expected-note{{in instantiation of default function argument expression for 'f<struct S>' required here}}
-
- F<int> f2;
- F<S> s2; // expected-note{{in instantiation of default function argument expression for 'F<struct S>' required here}}
}
template<typename T> struct G {
OpenPOWER on IntegriCloud