================
@@ -315,6 +315,62 @@ static bool isFunctionMacroExpansion(SourceLocation Loc,
   return EInfo.isFunctionMacroExpansion();
 }
 
+static const LocationContext *getFirstNonCtorCall(const LocationContext *LCtx) 
{
+  while (llvm::isa_and_nonnull<CXXConstructorDecl>(LCtx->getDecl()))
+    LCtx = LCtx->getParent();
+  return LCtx;
+}
+
+static const MemRegion *getInitializerRegion(const PostInitializer &PI) {
+  return reinterpret_cast<const MemRegion *>(PI.getLocationValue());
----------------
NagyDonat wrote:

This reinterpret cast is really scary, but I see that this is apparently the 
intended way of using `PostInitializer` objects (which is a bit crazy). Perhaps 
add an explanation comment.

It would be good to have a templated `PostInitializer::getLocationValue<T>() 
const` which returns `const T *` instead of `const void *`. However, that class 
is defined outside of CSA so I'm not sure that this is worth the effort.

https://github.com/llvm/llvm-project/pull/106982
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to