zero9178 added a comment.

In D104182#2815397 <https://reviews.llvm.org/D104182#2815397>, @davrec wrote:

> Was this performance hit when using the static analyzer?  A quick search 
> suggests `isAnyDestructorNoReturn()` is only called within the analyzer, 
> whereas comparable CXXRecordDecl methods whose results are stored 
> (`hasIrrelevantDestructor()` etc.) seem to be called somewhere by Sema.
>
> So non-users of the analyzer would not benefit from this change, and will 
> incur a slight cost, IIUC.  Is that cost remotely noticeable?  Probably not, 
> but a quick test along those lines would be helpful.
>
> All in all this is probably good and advisable.

The only place where it is called in the static analyzer is in 
ExprEngineCXX.cpp:650. I was doing a normal compilation of a C++ file of mine, 
and they were coming from Analysis/CFG.cpp:1871 in `addAutomaticObjDtors` as 
well as CFG.cpp:4836 in `VisitCXXBindTemporaryForDtors`. So depending on the 
contents of the users C++ file it could improve their compilation speed as 
well. I suspect that in my case it was producing such a deep stacktrace due to 
a template class that is using a lot of layers of inheritance to preserve 
triviallity of constructors and more, tho that is just a guess. Nevertheless 
I'd wager it will more than likely improve the compile time for some other 
people as well.

As another test I just compared the compilation of X86ISelLowering.cpp from 
LLVM using clang-cl trunk, with and without this patch and could not measure 
any difference but margin of error. So it's definitely not guaranteed to be an 
improvement, but least isn't any worse.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D104182

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

Reply via email to