[PATCH] D115379: ASTMatchers: Avoid using SmallVector::set_size()

Duncan P. N. Exon Smith via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Wed Dec 8 12:39:39 PST 2021


dexonsmith created this revision.
dexonsmith added reviewers: njames93, aaron.ballman.
dexonsmith requested review of this revision.
Herald added a project: clang.

Update `variadicMatcherDescriptor` to assert on reserved capacity and
to call `emplace_back()` instead of calling `set_size()` and constructing
the element in-place.


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D115379

Files:
  clang/lib/ASTMatchers/Dynamic/Marshallers.h


Index: clang/lib/ASTMatchers/Dynamic/Marshallers.h
===================================================================
--- clang/lib/ASTMatchers/Dynamic/Marshallers.h
+++ clang/lib/ASTMatchers/Dynamic/Marshallers.h
@@ -524,8 +524,9 @@
       }
       return {};
     }
-    InnerArgs.set_size(i + 1);
-    InnerArgsPtr[i] = new (&InnerArgs[i]) ArgT(ArgTraits::get(Value));
+    assert(InnerArgs.size() < InnerArgs.capacity());
+    InnerArgs.emplace_back(ArgTraits::get(Value));
+    InnerArgsPtr[i] = &InnerArgs[i];
   }
   return outvalueToVariantMatcher(Func(InnerArgsPtr));
 }


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D115379.392880.patch
Type: text/x-patch
Size: 581 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20211208/4f78c129/attachment.bin>


More information about the cfe-commits mailing list