shuaiwang added a comment.

Just some quick comments, I'll take a deeper look into other comments later.

This diff along unfortunately won't be able to handle `emplace_back` just yet, 
the reason (I believe, haven't fully tested) is that `std::forward` is not 
handled properly and almost all std functions involving forwarding references 
at least `std::forward`'ed once.
I have some more changes locally that treats `std::move` and `std::forward` 
just as casts and that should be able to really push the analysis further down 
the forwarding chain instead of stopping at `std::forward` call.
Rephased diff description to be more clear. Sorry for the confusion.



================
Comment at: include/clang/Analysis/Analyses/ExprMutationAnalyzer.h:60
+public:
+  FunctionParmMutationAnalyzer(const FunctionDecl &Func, ASTContext &Context);
+
----------------
JonasToth wrote:
> Why do we need a separate class for this?
> I think you can just create another object of `ExprMutAnalyzer` and do the 
> analysis with `findDeclMutation(FunctioParm)`.
> 
> The `Stmt` is the `functionDecl().getBody()`. Right now it could be that you 
> pass in an functionDecl without body.
> 
> Could there something happen with extern templates that the body is not 
> accessible?
It's mostly for the special handling of constructors in which case initializer 
list also could mutate param.


Repository:
  rC Clang

https://reviews.llvm.org/D52008



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to