diff options
| -rw-r--r-- | clang/AST/Type.cpp | 16 | ||||
| -rw-r--r-- | clang/include/clang/AST/Type.h | 7 |
2 files changed, 9 insertions, 14 deletions
diff --git a/clang/AST/Type.cpp b/clang/AST/Type.cpp index ccd4630843d..04c236c31b3 100644 --- a/clang/AST/Type.cpp +++ b/clang/AST/Type.cpp @@ -446,17 +446,13 @@ bool Type::isAggregateType() const { CanonicalType->getTypeClass() == VariableArray; } -// The only variable size types are auto arrays within a function. Structures -// cannot contain a VLA member. They can have a flexible array member, however -// the structure is still constant size (C99 6.7.2.1p16). -bool Type::isConstantSizeType(ASTContext &Ctx, SourceLocation *Loc) const { +/// isConstantSizeType - Return true if this is not a variable sized type, +/// according to the rules of C99 6.7.5p3. It is not legal to call this on +/// incomplete types. +bool Type::isConstantSizeType(ASTContext &Ctx) const { assert(!isIncompleteType() && "This doesn't make sense for incomplete types"); - if (const VariableArrayType *VAT =dyn_cast<VariableArrayType>(CanonicalType)){ - // The VAT must have a size, as it is known to be complete. - if (Loc) *Loc = VAT->getSizeExpr()->getLocStart(); - return false; - } - return true; + // The VAT must have a size, as it is known to be complete. + return !isa<VariableArrayType>(CanonicalType); } /// isIncompleteType - Return true if this is an incomplete type (C99 6.2.5p1) diff --git a/clang/include/clang/AST/Type.h b/clang/include/clang/AST/Type.h index 641e62f1ba5..24388ea8889 100644 --- a/clang/include/clang/AST/Type.h +++ b/clang/include/clang/AST/Type.h @@ -338,10 +338,9 @@ public: bool isUnsignedIntegerType() const; /// isConstantSizeType - Return true if this is not a variable sized type, - /// according to the rules of C99 6.7.5p3. If Loc is non-null, it is set to - /// the location of the subexpression that makes it a vla type. It is not - /// legal to call this on incomplete types. - bool isConstantSizeType(ASTContext &Ctx, SourceLocation *Loc = 0) const; + /// according to the rules of C99 6.7.5p3. It is not legal to call this on + /// incomplete types. + bool isConstantSizeType(ASTContext &Ctx) const; private: QualType getCanonicalTypeInternal() const { return CanonicalType; } friend class QualType; |

