Implementing C99 partial re-initialization behavior (DR-253)
Based on previous discussion on the mailing list, clang currently lacks support for C99 partial re-initialization behavior: Reference: http://lists.cs.uiuc.edu/pipermail/cfe-dev/2013-April/029188.html Reference: http://www.open-std.org/jtc1/sc22/wg14/www/docs/dr_253.htm This patch attempts to fix this problem. Given the following code snippet, struct P1 { char x[6]; }; struct LP1 { struct P1 p1; }; struct LP1 l = { .p1 = { "foo" }, .p1.x[2] = 'x' }; // this example is adapted from the example for "struct fred x[]" in DR-253; // currently clang produces in l: { "\0\0x" }, // whereas gcc 4.8 produces { "fox" }; // with this fix, clang will also produce: { "fox" }; Differential Review: http://reviews.llvm.org/D5789 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@239446 91177308-0d34-0410-b5e6-96231b3b80d8
Showing
- include/clang/AST/DataRecursiveASTVisitor.h 2 additions, 0 deletionsinclude/clang/AST/DataRecursiveASTVisitor.h
- include/clang/AST/Expr.h 74 additions, 0 deletionsinclude/clang/AST/Expr.h
- include/clang/AST/RecursiveASTVisitor.h 2 additions, 0 deletionsinclude/clang/AST/RecursiveASTVisitor.h
- include/clang/Basic/StmtNodes.td 2 additions, 0 deletionsinclude/clang/Basic/StmtNodes.td
- include/clang/Serialization/ASTBitCodes.h 4 additions, 0 deletionsinclude/clang/Serialization/ASTBitCodes.h
- lib/AST/Expr.cpp 27 additions, 0 deletionslib/AST/Expr.cpp
- lib/AST/ExprClassification.cpp 2 additions, 0 deletionslib/AST/ExprClassification.cpp
- lib/AST/ExprConstant.cpp 2 additions, 0 deletionslib/AST/ExprConstant.cpp
- lib/AST/ItaniumMangle.cpp 2 additions, 0 deletionslib/AST/ItaniumMangle.cpp
- lib/AST/StmtPrinter.cpp 16 additions, 0 deletionslib/AST/StmtPrinter.cpp
- lib/AST/StmtProfile.cpp 12 additions, 0 deletionslib/AST/StmtProfile.cpp
- lib/CodeGen/CGExprAgg.cpp 14 additions, 0 deletionslib/CodeGen/CGExprAgg.cpp
- lib/CodeGen/CGExprCXX.cpp 19 additions, 0 deletionslib/CodeGen/CGExprCXX.cpp
- lib/CodeGen/CGExprConstant.cpp 156 additions, 0 deletionslib/CodeGen/CGExprConstant.cpp
- lib/Sema/SemaExceptionSpec.cpp 2 additions, 0 deletionslib/Sema/SemaExceptionSpec.cpp
- lib/Sema/SemaInit.cpp 194 additions, 38 deletionslib/Sema/SemaInit.cpp
- lib/Sema/TreeTransform.h 19 additions, 0 deletionslib/Sema/TreeTransform.h
- lib/Serialization/ASTReaderStmt.cpp 18 additions, 0 deletionslib/Serialization/ASTReaderStmt.cpp
- lib/Serialization/ASTWriter.cpp 2 additions, 0 deletionslib/Serialization/ASTWriter.cpp
- lib/Serialization/ASTWriterStmt.cpp 12 additions, 0 deletionslib/Serialization/ASTWriterStmt.cpp
Loading
Please register or sign in to comment