aboutsummaryrefslogtreecommitdiff
path: root/lib/Sema/SemaInit.cpp
diff options
context:
space:
mode:
authorDaniel Dunbar <daniel@zuster.org>2008-08-18 20:28:46 +0000
committerDaniel Dunbar <daniel@zuster.org>2008-08-18 20:28:46 +0000
commit396f0bfd4b2189452914893ce69f5fb068d0ec22 (patch)
treea793a90004a89a91a413787a3148991523fcf37f /lib/Sema/SemaInit.cpp
parent1e2118954730cab40675d510a29400bea0d19d84 (diff)
Support initialization of incomplete array with zero size (as
extension). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54946 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Sema/SemaInit.cpp')
-rw-r--r--lib/Sema/SemaInit.cpp19
1 files changed, 9 insertions, 10 deletions
diff --git a/lib/Sema/SemaInit.cpp b/lib/Sema/SemaInit.cpp
index 7c48a110b2..12ca3820dd 100644
--- a/lib/Sema/SemaInit.cpp
+++ b/lib/Sema/SemaInit.cpp
@@ -257,19 +257,18 @@ void InitListChecker::CheckArrayType(InitListExpr *IList, QualType &DeclType,
}
if (DeclType->isIncompleteArrayType()) {
// If this is an incomplete array type, the actual type needs to
- // be calculated here
+ // be calculated here.
if (numElements == 0) {
- // Sizing an array implicitly to zero is not allowed
- // (It could in theory be allowed, but it doesn't really matter.)
+ // Sizing an array implicitly to zero is not allowed by ISO C,
+ // but is supported by GNU.
SemaRef->Diag(IList->getLocStart(),
- diag::err_at_least_one_initializer_needed_to_size_array);
- hadError = true;
- } else {
- llvm::APSInt ConstVal(32);
- ConstVal = numElements;
- DeclType = SemaRef->Context.getConstantArrayType(elementType, ConstVal,
- ArrayType::Normal, 0);
+ diag::ext_typecheck_zero_array_size);
}
+
+ llvm::APSInt ConstVal(32);
+ ConstVal = numElements;
+ DeclType = SemaRef->Context.getConstantArrayType(elementType, ConstVal,
+ ArrayType::Normal, 0);
}
}