diff options
Diffstat (limited to 'clang/lib/Sema')
-rw-r--r-- | clang/lib/Sema/SemaExpr.cpp | 4 | ||||
-rw-r--r-- | clang/lib/Sema/SemaInit.cpp | 3 |
2 files changed, 5 insertions, 2 deletions
diff --git a/clang/lib/Sema/SemaExpr.cpp b/clang/lib/Sema/SemaExpr.cpp index fee94568b78..5304fd9f7a5 100644 --- a/clang/lib/Sema/SemaExpr.cpp +++ b/clang/lib/Sema/SemaExpr.cpp @@ -22,6 +22,7 @@ #include "clang/Basic/SourceManager.h" #include "clang/Basic/TargetInfo.h" #include "clang/Parse/DeclSpec.h" +#include "clang/Parse/Designator.h" #include "clang/Parse/Scope.h" using namespace clang; @@ -1260,7 +1261,8 @@ ActOnInitList(SourceLocation LBraceLoc, ExprTy **initlist, unsigned NumInit, // Semantic analysis for initializers is done by ActOnDeclarator() and // CheckInitializer() - it requires knowledge of the object being intialized. - InitListExpr *E = new InitListExpr(LBraceLoc, InitList, NumInit, RBraceLoc); + InitListExpr *E = new InitListExpr(LBraceLoc, InitList, NumInit, RBraceLoc, + Designators.hasAnyDesignators()); E->setType(Context.VoidTy); // FIXME: just a place holder for now. return E; } diff --git a/clang/lib/Sema/SemaInit.cpp b/clang/lib/Sema/SemaInit.cpp index 12ca3820dd4..0e627a1aab4 100644 --- a/clang/lib/Sema/SemaInit.cpp +++ b/clang/lib/Sema/SemaInit.cpp @@ -87,7 +87,8 @@ void InitListChecker::CheckImplicitInitList(InitListExpr *ParentIList, // Synthesize an "implicit" InitListExpr (marked by the invalid source locs). InitListExpr *ILE = new InitListExpr(SourceLocation(), &InitExprs[0], InitExprs.size(), - SourceLocation()); + SourceLocation(), + ParentIList->hadDesignators()); ILE->setType(T); // Modify the parent InitListExpr to point to the implicit InitListExpr. |