Parse "sizeof(arr)[0]" as a sizeof of an expr if arr
is an expression.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44065 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/Parse/ParseExpr.cpp b/Parse/ParseExpr.cpp
index 2bc1d62..c1a200c 100644
--- a/Parse/ParseExpr.cpp
+++ b/Parse/ParseExpr.cpp
@@ -748,11 +748,15 @@
// If ParseParenExpression parsed a '(typename)' sequence only, the this is
// sizeof/alignof a type. Otherwise, it is sizeof/alignof an expression.
- if (ExprType == CastExpr) {
+ if (ExprType == CastExpr)
return Actions.ActOnSizeOfAlignOfTypeExpr(OpTok.getLocation(),
OpTok.is(tok::kw_sizeof),
LParenLoc, CastTy, RParenLoc);
- }
+
+ // If this is a parenthesized expression, it is the start of a
+ // unary-expression, but doesn't include any postfix pieces. Parse these
+ // now if present.
+ Operand = ParsePostfixExpressionSuffix(Operand);
}
// If we get here, the operand to the sizeof/alignof was an expresion.