aboutsummaryrefslogtreecommitdiff
path: root/Sema/SemaDecl.cpp
diff options
context:
space:
mode:
authorSteve Naroff <snaroff@apple.com>2007-10-18 03:27:23 +0000
committerSteve Naroff <snaroff@apple.com>2007-10-18 03:27:23 +0000
commitfd8b4a4b29a2b9d662d0c9a92c1eebd83160b10b (patch)
tree46dbb60658301b3ca3651c701d5fa4fb26d9eb6b /Sema/SemaDecl.cpp
parent994f939926ddbd38d99c4fe6dcfc3530c13a9a75 (diff)
Fix the following bug...
unsigned char asso_values[] = { 34 }; int legal2() { return asso_values[0]; } The code that creates the new constant array type was operating on the original type. As a result, the constant type being generated was "unsigned char [1][]" (which is wrong). The fix is to operate on the element type - in this case, the correct type is "unsigned char [1]" I added this case to array-init.c, which clearly didn't catch this bogosity... git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43112 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'Sema/SemaDecl.cpp')
-rw-r--r--Sema/SemaDecl.cpp2
1 files changed, 1 insertions, 1 deletions
diff --git a/Sema/SemaDecl.cpp b/Sema/SemaDecl.cpp
index 390caafdc0..5b54d8be7d 100644
--- a/Sema/SemaDecl.cpp
+++ b/Sema/SemaDecl.cpp
@@ -472,7 +472,7 @@ bool Sema::CheckInitializer(Expr *&Init, QualType &DeclType, bool isStatic) {
// Return a new array type from the number of initializers (C99 6.7.8p22).
llvm::APSInt ConstVal(32);
ConstVal = numInits;
- DeclType = Context.getConstantArrayType(DeclType, ConstVal,
+ DeclType = Context.getConstantArrayType(VAT->getElementType(), ConstVal,
ArrayType::Normal, 0);
}
return hadError;