[all-commits] [llvm/llvm-project] 091751: [AArch64] Allow the clang.arc.attachedcall marker ...
Marina Taylor via All-commits
all-commits at lists.llvm.org
Tue May 6 07:24:47 PDT 2025
Branch: refs/heads/users/citymarina/objc-claim-3b
Home: https://github.com/llvm/llvm-project
Commit: 09175195320cb573d5015e30b6da4e5677350364
https://github.com/llvm/llvm-project/commit/09175195320cb573d5015e30b6da4e5677350364
Author: Marina Taylor <marina_taylor at apple.com>
Date: 2025-05-02 (Fri, 02 May 2025)
Changed paths:
M llvm/lib/Target/AArch64/AArch64ExpandPseudoInsts.cpp
M llvm/lib/Target/AArch64/AArch64ISelLowering.cpp
M llvm/lib/Target/AArch64/AArch64InstrInfo.td
M llvm/lib/Target/AArch64/GISel/AArch64CallLowering.cpp
M llvm/test/CodeGen/AArch64/expand-blr-rvmarker-pseudo.mir
M llvm/test/CodeGen/AArch64/rvmarker-pseudo-expansion-and-outlining.mir
Log Message:
-----------
[AArch64] Allow the clang.arc.attachedcall marker to be optional.
Now that the clang.arc.attachedcall bundle requires having an
operand, which we emit a call to in the RVMARKER sequence,
we can achieve our real goal: make the marker NOP optional.
The intention is that a new objc runtime call will be introduced,
which doesn't require the NOP to be present, but must be adjacent
to the possibly-autorelease-returning call (that the bundle is
attached to).
This is achieved by having ISel embed whether the marker is necessary
with an additional boolean target immediate operand.
Co-authored-by: Ahmed Bougacha <ahmed at bougacha.org>
Commit: b410f3bd2ffe8d99b1fbe7c7675fda3eba5d1efb
https://github.com/llvm/llvm-project/commit/b410f3bd2ffe8d99b1fbe7c7675fda3eba5d1efb
Author: Marina Taylor <marina_taylor at apple.com>
Date: 2025-05-06 (Tue, 06 May 2025)
Changed paths:
M llvm/include/llvm/Analysis/ObjCARCUtil.h
M llvm/include/llvm/IR/Intrinsics.td
M llvm/lib/CodeGen/PreISelIntrinsicLowering.cpp
M llvm/lib/IR/Verifier.cpp
M llvm/lib/Target/AArch64/AArch64ISelLowering.cpp
M llvm/lib/Target/AArch64/GISel/AArch64CallLowering.cpp
Log Message:
-----------
[ObjC] Support objc_claimAutoreleasedReturnValue.
This adds basic support for objc_claimAutoreleasedReturnValue,
which is mostly equivalent to objc_retainAutoreleasedReturnValue,
with the difference that it doesn't require the marker nop to be
emitted between it and the call it was attached to.
To achieve that, this also teaches the AArch64 attachedcall bundle
lowering to pick whether the marker should be emitted or not
based on whether the attachedcall target is claimARV or retainARV.
Co-authored-by: Ahmed Bougacha <ahmed at bougacha.org>
Commit: 04c77f1707c13728b16843a023686ea15260c36a
https://github.com/llvm/llvm-project/commit/04c77f1707c13728b16843a023686ea15260c36a
Author: Marina Taylor <marina_taylor at apple.com>
Date: 2025-05-06 (Tue, 06 May 2025)
Changed paths:
M llvm/lib/Transforms/ObjCARC/ARCRuntimeEntryPoints.h
M llvm/lib/Transforms/ObjCARC/ObjCARC.cpp
M llvm/lib/Transforms/ObjCARC/ObjCARC.h
M llvm/lib/Transforms/ObjCARC/ObjCARCContract.cpp
M llvm/lib/Transforms/ObjCARC/ObjCARCOpts.cpp
A llvm/test/Transforms/ObjCARC/contract-attached-call-retain-to-claim.ll
Log Message:
-----------
[ObjCARC][Contract] Optimize bundled RetainRV to ClaimRV.
This teaches ObjCARCContract to transform attachedcall bundles
referencing objc_retainAutoreleasedReturnValue to instead
reference objc_claimAutoreleasedReturnValue.
The only distinction between the two is that the latter is required
to be guaranteed to immediately follow the call it's attached to,
and, by construction, the bundles always achieve that by:
- not being separable from the call through IR and the backend
- not getting the marker emitted when claimARV is the attachedcall.
This is enabled only for arm64, arm64e, and arm64_32 on
macOS13/iOS16 and related operating systems.
Co-authored-by: Ahmed Bougacha <ahmed at bougacha.org>
Compare: https://github.com/llvm/llvm-project/compare/09175195320c%5E...04c77f1707c1
To unsubscribe from these emails, change your notification settings at https://github.com/llvm/llvm-project/settings/notifications
More information about the All-commits
mailing list