From 7ebb4933750f008dfdaecc8b927024b794aa4b9b Mon Sep 17 00:00:00 2001 From: Ted Kremenek Date: Wed, 9 May 2012 05:35:08 +0000 Subject: Teach IsTailPaddedMemberArray() (used by -Warray-bounds) that a FieldDecl may have a Typedef type, and not always a ConstantArrayType. Fixes . llvm-svn: 156464 --- clang/test/Sema/array-bounds-ptr-arith.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'clang/test/Sema/array-bounds-ptr-arith.c') diff --git a/clang/test/Sema/array-bounds-ptr-arith.c b/clang/test/Sema/array-bounds-ptr-arith.c index 022335bd37a..e3de06a104e 100644 --- a/clang/test/Sema/array-bounds-ptr-arith.c +++ b/clang/test/Sema/array-bounds-ptr-arith.c @@ -19,3 +19,21 @@ void pr11594(struct S *s) { int a[10]; int *p = a - s->n; } + +// Test case reduced from . This resulted in +// an assertion failure because of the typedef instead of an explicit +// constant array type. +struct RDar11387038 {}; +typedef struct RDar11387038 RDar11387038Array[1]; +struct RDar11387038_Table { + RDar11387038Array z; +}; +typedef struct RDar11387038_Table * TPtr; +typedef TPtr *TabHandle; +struct RDar11387038_B { TabHandle x; }; +typedef struct RDar11387038_B RDar11387038_B; + +void radar11387038() { + RDar11387038_B *pRDar11387038_B; + struct RDar11387038* y = &(*pRDar11387038_B->x)->z[4]; +} -- cgit v1.2.3