Fixes for r287241. Use placement new. Apply clang-format.
authorMalcolm Parsons <malcolm.parsons@gmail.com>
Thu, 17 Nov 2016 21:00:09 +0000 (21:00 +0000)
committerMalcolm Parsons <malcolm.parsons@gmail.com>
Thu, 17 Nov 2016 21:00:09 +0000 (21:00 +0000)
llvm-svn: 287258

clang/lib/Parse/ParseDeclCXX.cpp
clang/lib/Sema/DeclSpec.cpp
clang/lib/Sema/SemaDeclCXX.cpp

index 7a932ab..e353c79 100644 (file)
@@ -2039,7 +2039,8 @@ void Parser::HandleMemberFunctionDeclDelays(Declarator& DeclaratorInfo,
     LateMethod->DefaultArgs.reserve(FTI.NumParams);
     for (unsigned ParamIdx = 0; ParamIdx < FTI.NumParams; ++ParamIdx)
       LateMethod->DefaultArgs.push_back(LateParsedDefaultArgument(
-        FTI.Params[ParamIdx].Param, std::move(FTI.Params[ParamIdx].DefaultArgTokens)));
+          FTI.Params[ParamIdx].Param,
+          std::move(FTI.Params[ParamIdx].DefaultArgTokens)));
   }
 }
 
index 0f88ed3..4107977 100644 (file)
@@ -223,15 +223,11 @@ DeclaratorChunk DeclaratorChunk::getFunction(bool hasProto,
     if (!TheDeclarator.InlineStorageUsed &&
         NumParams <= llvm::array_lengthof(TheDeclarator.InlineParams)) {
       I.Fun.Params = TheDeclarator.InlineParams;
-      // Zero the memory block so that unique pointers are initialized
-      // properly.
-      memset(I.Fun.Params, 0, sizeof(Params[0]) * NumParams);
+      new (I.Fun.Params) ParamInfo[NumParams];
       I.Fun.DeleteParams = false;
       TheDeclarator.InlineStorageUsed = true;
     } else {
-      // Call the version of new that zeroes memory so that unique pointers
-      // are initialized properly.
-      I.Fun.Params = new DeclaratorChunk::ParamInfo[NumParams]();
+      I.Fun.Params = new DeclaratorChunk::ParamInfo[NumParams];
       I.Fun.DeleteParams = true;
     }
     for (unsigned i = 0; i < NumParams; i++)
index 06c6af1..d41748f 100644 (file)
@@ -395,7 +395,8 @@ void Sema::CheckExtraCXXDefaultArguments(Declarator &D) {
            ++argIdx) {
         ParmVarDecl *Param = cast<ParmVarDecl>(chunk.Fun.Params[argIdx].Param);
         if (Param->hasUnparsedDefaultArg()) {
-          std::unique_ptr<CachedTokens> Toks = std::move(chunk.Fun.Params[argIdx].DefaultArgTokens);
+          std::unique_ptr<CachedTokens> Toks =
+              std::move(chunk.Fun.Params[argIdx].DefaultArgTokens);
           SourceRange SR;
           if (Toks->size() > 1)
             SR = SourceRange((*Toks)[1].getLocation(),