Make sure that restrict-qualifying an array actually adds a restrict qualifier. PR11354. (operator bool() is evil!)

llvm-svn: 144355
This commit is contained in:
Eli Friedman 2011-11-11 02:00:42 +00:00
parent c12c211c44
commit 4f64e1819b
2 changed files with 4 additions and 5 deletions

View File

@ -2032,8 +2032,7 @@ static TypeSourceInfo *GetFullTypeForDeclarator(TypeProcessingState &state,
ASM = ArrayType::Normal; ASM = ArrayType::Normal;
D.setInvalidType(true); D.setInvalidType(true);
} }
T = S.BuildArrayType(T, ASM, ArraySize, T = S.BuildArrayType(T, ASM, ArraySize, ATI.TypeQuals,
Qualifiers::fromCVRMask(ATI.TypeQuals),
SourceRange(DeclType.Loc, DeclType.EndLoc), Name); SourceRange(DeclType.Loc, DeclType.EndLoc), Name);
break; break;
} }

View File

@ -1,7 +1,7 @@
// RUN: %clang_cc1 %s -fsyntax-only -verify -pedantic // RUN: %clang_cc1 %s -fsyntax-only -verify -pedantic
// PR1892
void f(double a[restrict][5]); // should promote to restrict ptr. // PR1892, PR11354
void f(double (* restrict a)[5]); void f(double a[restrict][5]) { __typeof(a) x = 10; } // expected-warning {{(aka 'double (*restrict)[5]')}}
int foo (__const char *__path); int foo (__const char *__path);
int foo(__const char *__restrict __file); int foo(__const char *__restrict __file);