MTC added a comment.

In D55388#1322601 <https://reviews.llvm.org/D55388#1322601>, @xazax.hun wrote:

> Hm. I wonder if it would also make sense to model e.g. the get method to 
> return nullptr for moved from smart ptrs. This could help null dereference 
> checker and also aid false path prunning.


Great idea!

IIRC, we haven't model smart-pointer yet. There are no warnings fired in the 
simple code below.

  int foo() {
      auto ptr = std::make_unique<int>(0);
      ptr = nullptr;
      return *ptr;              // <--------- Should emit a warning here
  }

If we want to model the `get()` method, not only the move action but also the 
assignment should be considered. `std::unique_ptr` may be fine, but is the 
reference count stuff too complex for `std::shared_ptr` to get the information 
available for analysis? Can the `lifetime` analysis cover the smart pointers?

  int unique_ptr_bad() {
      auto ptr = std::make_unique<int>(0);
      ptr = nullptr;
      int *raw_p = ptr.get();   // <--------- 'raw_p' is definitely null here
      return *raw_p;              // <--------- Should emit a warning here
  }

Related dev-mail about smart pointer checkers, see 
http://lists.llvm.org/pipermail/cfe-dev/2012-January/019446.html


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D55388/new/

https://reviews.llvm.org/D55388



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

Reply via email to