зеркало из https://github.com/microsoft/clang.git
fix PR3459: improve compatibility with gcc when checking for constant exprs
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63517 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Родитель
7f5221b023
Коммит
f23199847b
|
@ -3128,10 +3128,9 @@ static QualType TryToFixInvalidVariablyModifiedType(QualType T,
|
|||
|
||||
assert(EvalResult.Val.isInt() && "Size expressions must be integers!");
|
||||
llvm::APSInt &Res = EvalResult.Val.getInt();
|
||||
if (Res > llvm::APSInt(Res.getBitWidth(), Res.isUnsigned()))
|
||||
return Context.getConstantArrayType(VLATy->getElementType(),
|
||||
Res, ArrayType::Normal, 0);
|
||||
return QualType();
|
||||
|
||||
return Context.getConstantArrayType(VLATy->getElementType(),
|
||||
Res, ArrayType::Normal, 0);
|
||||
}
|
||||
|
||||
bool Sema::VerifyBitField(SourceLocation FieldLoc, IdentifierInfo *FieldName,
|
||||
|
|
|
@ -0,0 +1,10 @@
|
|||
// RUN: clang -fsyntax-only -verify %s
|
||||
|
||||
// PR3459
|
||||
struct bar {
|
||||
char n[1];
|
||||
};
|
||||
|
||||
struct foo {
|
||||
char name[(int)&((struct bar *)0)->n];
|
||||
};
|
Загрузка…
Ссылка в новой задаче