summaryrefslogtreecommitdiffstats
path: root/clang/lib/Sema/SemaChecking.cpp
diff options
context:
space:
mode:
authorFariborz Jahanian <fjahanian@apple.com>2013-04-29 22:01:25 +0000
committerFariborz Jahanian <fjahanian@apple.com>2013-04-29 22:01:25 +0000
commit4289a5a429e3901ff5391d94e894f7ce0029865f (patch)
tree30071dd09121713e3694afaacbd8ca7b0f760f05 /clang/lib/Sema/SemaChecking.cpp
parent474df6d3ede6428fbd1f04b4501f0944a358c1f5 (diff)
downloadbcm5719-llvm-4289a5a429e3901ff5391d94e894f7ce0029865f.tar.gz
bcm5719-llvm-4289a5a429e3901ff5391d94e894f7ce0029865f.zip
c language: diagnose use of "[*]" on any array dimension
in the parameter of a function definition. Currently, it crashes in irgen if it is on other than the 1st dimension. // rdar://13705391 llvm-svn: 180732
Diffstat (limited to 'clang/lib/Sema/SemaChecking.cpp')
-rw-r--r--clang/lib/Sema/SemaChecking.cpp4
1 files changed, 3 insertions, 1 deletions
diff --git a/clang/lib/Sema/SemaChecking.cpp b/clang/lib/Sema/SemaChecking.cpp
index 8adfbd598f0..c19fe27c7fe 100644
--- a/clang/lib/Sema/SemaChecking.cpp
+++ b/clang/lib/Sema/SemaChecking.cpp
@@ -5703,12 +5703,14 @@ bool Sema::CheckParmsForFunctionDef(ParmVarDecl **P, ParmVarDecl **PEnd,
// notation in their sequences of declarator specifiers to specify
// variable length array types.
QualType PType = Param->getOriginalType();
- if (const ArrayType *AT = Context.getAsArrayType(PType)) {
+ while (const ArrayType *AT = Context.getAsArrayType(PType)) {
if (AT->getSizeModifier() == ArrayType::Star) {
// FIXME: This diagnostic should point the '[*]' if source-location
// information is added for it.
Diag(Param->getLocation(), diag::err_array_star_in_function_definition);
+ break;
}
+ PType= AT->getElementType();
}
}
OpenPOWER on IntegriCloud