From 4cf225382a8b061dce41733c962d62b6db9721f8 Mon Sep 17 00:00:00 2001 From: Ted Kremenek Date: Mon, 19 Mar 2012 23:48:41 +0000 Subject: [PATCH] Fix crash when querying the CFG reported when using the thread safety analysis on code using multi-dimensional arrays. Fix by DeLesley Hutchins, and reported in PR 12271. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153067 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Analysis/CFG.cpp | 2 +- test/SemaCXX/warn-everthing.cpp | 13 +++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) create mode 100644 test/SemaCXX/warn-everthing.cpp diff --git a/lib/Analysis/CFG.cpp b/lib/Analysis/CFG.cpp index 0a844a0376..24ca958827 100644 --- a/lib/Analysis/CFG.cpp +++ b/lib/Analysis/CFG.cpp @@ -3087,7 +3087,7 @@ CFGImplicitDtor::getDestructorDecl(ASTContext &astContext) const { const VarDecl *var = cast(this)->getVarDecl(); QualType ty = var->getType(); ty = ty.getNonReferenceType(); - if (const ArrayType *arrayType = astContext.getAsArrayType(ty)) { + while (const ArrayType *arrayType = astContext.getAsArrayType(ty)) { ty = arrayType->getElementType(); } const RecordType *recordType = ty->getAs(); diff --git a/test/SemaCXX/warn-everthing.cpp b/test/SemaCXX/warn-everthing.cpp new file mode 100644 index 0000000000..144a8f90df --- /dev/null +++ b/test/SemaCXX/warn-everthing.cpp @@ -0,0 +1,13 @@ +// RUN: %clang -Weverything -fsyntax-only %s -verify + +// This previously crashed due to a bug in the CFG. Exercising all +// warnings helps check CFG construction. +class PR12271 { +public: + PR12271(); + ~PR12271(); +}; + +void testPR12271() { + PR12271 a[1][1]; +} \ No newline at end of file -- 2.40.0