JonasToth added a comment.

In https://reviews.llvm.org/D52008#1233667, @shuaiwang wrote:

> 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.


I did look up the rules for resolved the universal references.

  void f() {
    int x;
    std::move(x);
  }

Will create a normal reference to `x`. This would be the point were have to 
recursivly follow all references created from a value and check if they are 
mutated. Do you see another possibility on handling universal references 
correctly?



================
Comment at: include/clang/Analysis/Analyses/ExprMutationAnalyzer.h:60
+public:
+  FunctionParmMutationAnalyzer(const FunctionDecl &Func, ASTContext &Context);
+
----------------
shuaiwang wrote:
> 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.
Hmm, still why not within `ExprMutAnalyzer`?
You could make it a class living within ExprMutAnalyzer in the private section. 
Then its clear its an implementation detail.


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