]> granicus.if.org Git - clang/commit
C++1y: Allow aggregates to have default initializers.
authorRichard Smith <richard-llvm@metafoo.co.uk>
Sat, 20 Apr 2013 22:23:05 +0000 (22:23 +0000)
committerRichard Smith <richard-llvm@metafoo.co.uk>
Sat, 20 Apr 2013 22:23:05 +0000 (22:23 +0000)
commitc3bf52ced9652f555aa0767bb822ec4c64546212
treee1bc9a6ecec46f15038eb98b525de05179d8479b
parent7db58e0fe92a7a64daf14f78ceea103ba7fbf03d
C++1y: Allow aggregates to have default initializers.

Add a CXXDefaultInitExpr, analogous to CXXDefaultArgExpr, and use it both in
CXXCtorInitializers and in InitListExprs to represent a default initializer.

There's an additional complication here: because the default initializer can
refer to the initialized object via its 'this' pointer, we need to make sure
that 'this' points to the right thing within the evaluation.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@179958 91177308-0d34-0410-b5e6-96231b3b80d8
37 files changed:
include/clang/AST/DeclCXX.h
include/clang/AST/ExprCXX.h
include/clang/AST/RecursiveASTVisitor.h
include/clang/Basic/StmtNodes.td
include/clang/Serialization/ASTBitCodes.h
lib/AST/DeclCXX.cpp
lib/AST/DeclPrinter.cpp
lib/AST/Expr.cpp
lib/AST/ExprCXX.cpp
lib/AST/ExprClassification.cpp
lib/AST/ExprConstant.cpp
lib/AST/ItaniumMangle.cpp
lib/AST/StmtPrinter.cpp
lib/AST/StmtProfile.cpp
lib/Analysis/CFG.cpp
lib/CodeGen/CGClass.cpp
lib/CodeGen/CGExpr.cpp
lib/CodeGen/CGExprAgg.cpp
lib/CodeGen/CGExprComplex.cpp
lib/CodeGen/CGExprConstant.cpp
lib/CodeGen/CGExprScalar.cpp
lib/CodeGen/CodeGenFunction.cpp
lib/CodeGen/CodeGenFunction.h
lib/Sema/SemaDeclCXX.cpp
lib/Sema/SemaExceptionSpec.cpp
lib/Sema/SemaInit.cpp
lib/Sema/TreeTransform.h
lib/Serialization/ASTReaderStmt.cpp
lib/Serialization/ASTWriterStmt.cpp
lib/StaticAnalyzer/Core/ExprEngine.cpp
test/CXX/dcl.decl/dcl.init/dcl.init.aggr/p1-0x.cpp
test/CXX/dcl.decl/dcl.init/dcl.init.aggr/p7.cpp [new file with mode: 0644]
test/CodeGenCXX/cxx1y-initializer-aggregate.cpp [new file with mode: 0644]
test/SemaCXX/cxx1y-initializer-aggregates.cpp [new file with mode: 0644]
tools/libclang/CXCursor.cpp
tools/libclang/RecursiveASTVisitor.h
www/cxx_status.html