pmatos created this revision.
pmatos added a reviewer: efriedma.
pmatos added a subscriber: cfe-commits.

Ensure sizeof expression context is partially evaluated so that potential 
typeof operators inside are evaluated if necessary.

Fixes PR31042.


https://reviews.llvm.org/D26843

Files:
  lib/Parse/ParseExpr.cpp


Index: lib/Parse/ParseExpr.cpp
===================================================================
--- lib/Parse/ParseExpr.cpp
+++ lib/Parse/ParseExpr.cpp
@@ -1881,7 +1881,10 @@
   if (OpTok.isOneOf(tok::kw_alignof, tok::kw__Alignof))
     Diag(OpTok, diag::warn_cxx98_compat_alignof);
 
-  EnterExpressionEvaluationContext Unevaluated(Actions, Sema::Unevaluated,
+  EnterExpressionEvaluationContext Unevaluated(Actions,
+                                              OpTok.is(tok::kw_sizeof) ?
+                                              Sema::PotentiallyEvaluated :
+                                              Sema::Unevaluated,
                                                Sema::ReuseLambdaContextDecl);
 
   bool isCastExpr;


Index: lib/Parse/ParseExpr.cpp
===================================================================
--- lib/Parse/ParseExpr.cpp
+++ lib/Parse/ParseExpr.cpp
@@ -1881,7 +1881,10 @@
   if (OpTok.isOneOf(tok::kw_alignof, tok::kw__Alignof))
     Diag(OpTok, diag::warn_cxx98_compat_alignof);
 
-  EnterExpressionEvaluationContext Unevaluated(Actions, Sema::Unevaluated,
+  EnterExpressionEvaluationContext Unevaluated(Actions,
+					       OpTok.is(tok::kw_sizeof) ?
+					       Sema::PotentiallyEvaluated :
+					       Sema::Unevaluated,
                                                Sema::ReuseLambdaContextDecl);
 
   bool isCastExpr;
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to