Author: Kiran Date: 2026-02-06T12:48:23Z New Revision: 56c875a84231fdf84e9e72aa8bb5766cfe0a734c
URL: https://github.com/llvm/llvm-project/commit/56c875a84231fdf84e9e72aa8bb5766cfe0a734c DIFF: https://github.com/llvm/llvm-project/commit/56c875a84231fdf84e9e72aa8bb5766cfe0a734c.diff LOG: Revert "[Clang] Fix atomic boolean compound assignment (#33210)" (#180183) Reverts llvm/llvm-project#178220 Added: Modified: clang/docs/ReleaseNotes.rst clang/lib/CodeGen/CGExprScalar.cpp Removed: clang/test/CodeGen/compound-assign-atomic-bool.c ################################################################################ diff --git a/clang/docs/ReleaseNotes.rst b/clang/docs/ReleaseNotes.rst index 1f925419432bb..24d4e07ca68b3 100644 --- a/clang/docs/ReleaseNotes.rst +++ b/clang/docs/ReleaseNotes.rst @@ -223,9 +223,6 @@ Improvements to Coverage Mapping Bug Fixes in This Version ------------------------- - -- Fixed atomic boolean compound assignment; the conversion back to atomic bool would be miscompiled. (#GH33210) - - Fixed a failed assertion in the preprocessor when ``__has_embed`` parameters are missing parentheses. (#GH175088) - Fix lifetime extension of temporaries in for-range-initializers in templates. (#GH165182) diff --git a/clang/lib/CodeGen/CGExprScalar.cpp b/clang/lib/CodeGen/CGExprScalar.cpp index 1f9389660e127..d21e017bd2b56 100644 --- a/clang/lib/CodeGen/CGExprScalar.cpp +++ b/clang/lib/CodeGen/CGExprScalar.cpp @@ -4035,14 +4035,9 @@ LValue ScalarExprEmitter::EmitCompoundAssignLValue( if (LHSLV.isBitField()) { Previous = Result; Result = EmitScalarConversion(Result, PromotionTypeCR, LHSTy, Loc); - } else if (const auto *atomicTy = LHSTy->getAs<AtomicType>()) { - Result = - EmitScalarConversion(Result, PromotionTypeCR, atomicTy->getValueType(), - Loc, ScalarConversionOpts(CGF.SanOpts)); - } else { + } else Result = EmitScalarConversion(Result, PromotionTypeCR, LHSTy, Loc, ScalarConversionOpts(CGF.SanOpts)); - } if (atomicPHI) { llvm::BasicBlock *curBlock = Builder.GetInsertBlock(); diff --git a/clang/test/CodeGen/compound-assign-atomic-bool.c b/clang/test/CodeGen/compound-assign-atomic-bool.c deleted file mode 100644 index 4e8f351b49b81..0000000000000 --- a/clang/test/CodeGen/compound-assign-atomic-bool.c +++ /dev/null @@ -1,29 +0,0 @@ -// RUN: %clang_cc1 -emit-llvm -o - %s | FileCheck %s - -// When performing compound assignment on atomic_bool, ensure that we -// correctly handle the conversion from integer to boolean, by comparing -// with zero rather than truncating. - -// CHECK: @compund_assign_add -int compund_assign_add(void) { - _Atomic _Bool b; - - b += 2; - // CHECK: add - // CHECK-NEXT: icmp ne - // CHECK-NEXT: zext - // CHECK-NEXT: cmpxchg - return b; -} - -// CHECK: @compund_assign_minus -int compund_assign_minus(void) { - _Atomic _Bool b; - - b -= 2; - // CHECK: sub - // CHECK-NEXT: icmp ne - // CHECK-NEXT: zext - // CHECK-NEXT: cmpxchg - return b; -} _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
