Index: llvm/tools/clang/lib/StaticAnalyzer/Core/ExprEngine.cpp =================================================================== --- llvm/tools/clang/lib/StaticAnalyzer/Core/ExprEngine.cpp +++ llvm/tools/clang/lib/StaticAnalyzer/Core/ExprEngine.cpp @@ -1973,7 +1973,8 @@ StmtNodeBuilder Bldr(checkerPreStmt, Dst, *currBldrCtx); assert(A->isGLValue() || - (!AMgr.getLangOpts().CPlusPlus && + A->getBase()->getType()->isVectorType() || + (!AMgr.getLangOpts().CPlusPlus && A->getType().isCForbiddenLValueType())); for (ExplodedNodeSet::iterator it = checkerPreStmt.begin(), Index: llvm/tools/clang/test/Analysis/crash-vector-rvalue.c =================================================================== --- /dev/null +++ llvm/tools/clang/test/Analysis/crash-vector-rvalue.c @@ -0,0 +1,7 @@ +// RUN: %clang_cc1 -analyze -analyzer-checker=core -verify %s +typedef int vec __attribute__((__vector_size__(4)));; +vec bar(); +int foo() { + int op = bar()[2]; + return op; +}