diff --git a/clang/lib/StaticAnalyzer/Core/ExprEngineC.cpp b/clang/lib/StaticAnalyzer/Core/ExprEngineC.cpp index 8a02b2ca9613..2e3e9f51e7df 100644 --- a/clang/lib/StaticAnalyzer/Core/ExprEngineC.cpp +++ b/clang/lib/StaticAnalyzer/Core/ExprEngineC.cpp @@ -568,8 +568,10 @@ void ExprEngine::VisitInitListExpr(const InitListExpr *IE, state->getSVal(initEx, LCtx))); return; } - - llvm_unreachable("unprocessed InitListExpr type"); + + assert(IE->getNumInits() == 1); + B.generateNode(IE, Pred, state->BindExpr(IE, LCtx, UnknownVal())); + return; } void ExprEngine::VisitGuardedExpr(const Expr *Ex, diff --git a/clang/test/Analysis/cxx11-crashes.cpp b/clang/test/Analysis/cxx11-crashes.cpp index 6e60ac63cc3a..a7bfe4ebe5f5 100644 --- a/clang/test/Analysis/cxx11-crashes.cpp +++ b/clang/test/Analysis/cxx11-crashes.cpp @@ -31,3 +31,8 @@ void radar11487541() { namespace fs = boost::filesystem; fs::path p; } + +// PR12873 radrar://11499139 +void testFloatInitializer() { + const float ysize={0.015}, xsize={0.01}; +}