$ cat test-ento__ExprEngine__elideDestructor.cc struct a { ~a(); }; struct F { a d; F(char *, a = a()); }; void g() { char h[1]; for (int i = 0;;) F j(i ? j : h); } $ ./clang-tidy -checks=-*,clang-analyzer* test-ento__ExprEngine__elideDestructor.cc -- -std=c++11 assert.h assertion failed at llvm/tools/clang/lib/StaticAnalyzer/Core/ExprEngine.cpp:485 in static clang::ento::ProgramStateRef clang::ento::ExprEngine::elideDestructor(clang::ento::ProgramStateRef, const clang::CXXBindTemporaryExpr *, const clang::LocationContext *): !State->contains<ElidedDestructors>(I) @ 0x559134e889d6 __assert_fail @ 0x559132b8a025 clang::ento::ExprEngine::elideDestructor() @ 0x559132bb9722 clang::ento::ExprEngine::prepareForObjectConstruction() @ 0x559132bb962d clang::ento::ExprEngine::prepareForObjectConstruction() @ 0x559132bb962d clang::ento::ExprEngine::prepareForObjectConstruction() @ 0x559132bba6eb clang::ento::ExprEngine::VisitCXXConstructExpr() @ 0x559132b8e30d clang::ento::ExprEngine::Visit() @ 0x559132b8b52e clang::ento::ExprEngine::ProcessStmt() @ 0x559132b8b24b clang::ento::ExprEngine::processCFGElement() @ 0x559132bac965 clang::ento::CoreEngine::HandlePostStmt() @ 0x559132babdbd clang::ento::CoreEngine::ExecuteWorkList() @ 0x5591328dbc66 (anonymous namespace)::AnalysisConsumer::ActionExprEngine() @ 0x5591328db7e6 (anonymous namespace)::AnalysisConsumer::HandleCode() @ 0x5591328c73b4 (anonymous namespace)::AnalysisConsumer::HandleTranslationUnit() This is most likely caused by r335800.
Yup, thanks! Default arguments strike back. https://reviews.llvm.org/D49213
The fix was committed in r338441.