Author: Aaron Ballman Date: 2022-09-21T14:59:51-04:00 New Revision: 1ae5310ebbecadab52c1b7fc29596ac5b61795a3
URL: https://github.com/llvm/llvm-project/commit/1ae5310ebbecadab52c1b7fc29596ac5b61795a3 DIFF: https://github.com/llvm/llvm-project/commit/1ae5310ebbecadab52c1b7fc29596ac5b61795a3.diff LOG: Changing some strange code into an assert; NFC This code was added in b65b1f322bd88513586a4539d2b5f18aeb698f3f, but it was not noticed that the [[fallthrough]] behavior was very wrong. In C mode, we would set the ParenExprType to CompoundLiteral and then promptly overwrite that information by falling through. After some investigation, I convinced myself that it is not possible to hit this code path in C, only in C++. I've switched it to be an assertion; I don't expect to hit it, but if we do hit it, that will at least give us a code example we can use to reason about the intent of the original code. Added: Modified: clang/lib/Parse/ParseExpr.cpp Removed: ################################################################################ diff --git a/clang/lib/Parse/ParseExpr.cpp b/clang/lib/Parse/ParseExpr.cpp index 588f4cf6aa8c..77e8b9488a8c 100644 --- a/clang/lib/Parse/ParseExpr.cpp +++ b/clang/lib/Parse/ParseExpr.cpp @@ -943,8 +943,7 @@ ExprResult Parser::ParseCastExpression(CastParseKind ParseKind, ParenParseOption ParenExprType; switch (ParseKind) { case CastParseKind::UnaryExprOnly: - if (!getLangOpts().CPlusPlus) - ParenExprType = CompoundLiteral; + assert(getLangOpts().CPlusPlus && "not possible to get here in C"); [[fallthrough]]; case CastParseKind::AnyCastExpr: ParenExprType = ParenParseOption::CastExpr; _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits