================
@@ -408,7 +409,15 @@ static void emitAtomicCmpXchg(CodeGenFunction &CGF,
AtomicExpr *E, bool IsWeak,
CGF.Builder.SetInsertPoint(StoreExpectedBB);
// Update the memory at Expected with Old's value.
- CGF.Builder.CreateStore(Old, Val1);
+
+ llvm::Type *ExpectedType = ExpectedResult.getElementType();
+ uint64_t OriginalSizeInBits =
CGF.CGM.getDataLayout().getTypeSizeInBits(ExpectedType);
+ if (OriginalSizeInBits / 8 == Size) {
+ CGF.Builder.CreateStore(Old, ExpectedResult);
+ } else {
+ // How to just store N bytes to ExpectedResult ?
+ CGF.Builder.CreateStore(Old, ExpectedResult);
----------------
ldionne wrote:
@bcardosolopes Hi Bruno! I'm chatting with @huixie90 right now and it seems
like he needs to store an N bytes temporary object (that was used to perform
the compare exchange above, but where only the first M bytes are used) into the
actual result, which has exactly M bytes. We're novices in LLVM IR here -- can
you suggest someone that would be able to answer a few questions like this one?
Starting with you since Github suggested you as a reviewer for having modified
these files recently :)
https://github.com/llvm/llvm-project/pull/78707
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits