Author: Erich Keane Date: 2026-02-12T15:04:49Z New Revision: 3d8d73a7f98aabd23b02e8ebe1a2bcf9dce3752e
URL: https://github.com/llvm/llvm-project/commit/3d8d73a7f98aabd23b02e8ebe1a2bcf9dce3752e DIFF: https://github.com/llvm/llvm-project/commit/3d8d73a7f98aabd23b02e8ebe1a2bcf9dce3752e.diff LOG: [NFC] Fix the unreachable 'return' in OpenACC Stmt handling (#181153) A result of various cleanups, reimplementations/etc, I ended up with a return after an if/else branch where each returned in #168422. This patch removes the 'else' after a return, and removes the unreachable return. Added: Modified: clang/lib/AST/StmtOpenACC.cpp Removed: ################################################################################ diff --git a/clang/lib/AST/StmtOpenACC.cpp b/clang/lib/AST/StmtOpenACC.cpp index ec8ceb949c6c0..2191c6a072264 100644 --- a/clang/lib/AST/StmtOpenACC.cpp +++ b/clang/lib/AST/StmtOpenACC.cpp @@ -513,32 +513,31 @@ getCaptureStmtInfo(const Stmt *AssocStmt) { Read = getReadStmtInfo(Stmt2); return OpenACCAtomicConstruct::StmtInfo::createUpdateRead(*Update, *Read); - } else { - // All of the forms that can be done in a single line fall into 2 - // categories: update/read, or read/update. The special cases are the - // postfix unary operators, which we have to make sure we do the 'read' - // first. However, we still parse these as the RHS first, so we have a - // 'reversing' step. READ: UPDATE v = x++; v = x--; UPDATE: READ v = ++x; v - // = --x; v = x binop=expr v = x = x binop expr v = x = expr binop x + } - const Expr *E = cast<const Expr>(AssocStmt); + // All of the forms that can be done in a single line fall into 2 + // categories: update/read, or read/update. The special cases are the + // postfix unary operators, which we have to make sure we do the 'read' + // first. However, we still parse these as the RHS first, so we have a + // 'reversing' step. READ: UPDATE v = x++; v = x--; UPDATE: READ v = ++x; v + // = --x; v = x binop=expr v = x = x binop expr v = x = expr binop x - std::optional<OpenACCAtomicConstruct::SingleStmtInfo> Read = - getReadStmtInfo(E, /*ForAtomicComputeSingleStmt=*/true); - std::optional<OpenACCAtomicConstruct::SingleStmtInfo> Update = - getUpdateStmtInfo(Read->X); + const Expr *E = cast<const Expr>(AssocStmt); - // Fixup this, since the 'X' for the read is the result after write, but is - // the same value as the LHS-most variable of the update(its X). - Read->X = Update->X; + std::optional<OpenACCAtomicConstruct::SingleStmtInfo> Read = + getReadStmtInfo(E, /*ForAtomicComputeSingleStmt=*/true); + std::optional<OpenACCAtomicConstruct::SingleStmtInfo> Update = + getUpdateStmtInfo(Read->X); - // Postfix is a read FIRST, then an update. - if (Update->IsPostfixIncDec) - return OpenACCAtomicConstruct::StmtInfo::createReadUpdate(*Read, *Update); + // Fixup this, since the 'X' for the read is the result after write, but is + // the same value as the LHS-most variable of the update(its X). + Read->X = Update->X; - return OpenACCAtomicConstruct::StmtInfo::createUpdateRead(*Update, *Read); - } - return {}; + // Postfix is a read FIRST, then an update. + if (Update->IsPostfixIncDec) + return OpenACCAtomicConstruct::StmtInfo::createReadUpdate(*Read, *Update); + + return OpenACCAtomicConstruct::StmtInfo::createUpdateRead(*Update, *Read); } const OpenACCAtomicConstruct::StmtInfo _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
