From f7f102f81a6516ea0e47370959a388eaa5f16c3c Mon Sep 17 00:00:00 2001 From: Eli Friedman Date: Wed, 25 Jan 2012 22:19:07 +0000 Subject: Fix a crash involving a multi-dimensional dependent VLA. PR11744. llvm-svn: 148989 --- clang/lib/Sema/TreeTransform.h | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'clang/lib/Sema/TreeTransform.h') diff --git a/clang/lib/Sema/TreeTransform.h b/clang/lib/Sema/TreeTransform.h index f5fc3b7cb84..5d761d382a7 100644 --- a/clang/lib/Sema/TreeTransform.h +++ b/clang/lib/Sema/TreeTransform.h @@ -3593,8 +3593,12 @@ TreeTransform::TransformConstantArrayType(TypeLocBuilder &TLB, if (Result.isNull()) return QualType(); } - - ConstantArrayTypeLoc NewTL = TLB.push(Result); + + // We might have either a ConstantArrayType or a VariableArrayType now: + // a ConstantArrayType is allowed to have an element type which is a + // VariableArrayType if the type is dependent. Fortunately, all array + // types have the same location layout. + ArrayTypeLoc NewTL = TLB.push(Result); NewTL.setLBracketLoc(TL.getLBracketLoc()); NewTL.setRBracketLoc(TL.getRBracketLoc()); -- cgit v1.2.3