llvm-project
d22b41d3 - [llvm] Add support for atomicrmw and cmpxchg in AssumeBundleBuilder (#194630)

Commit
1 day ago
[llvm] Add support for atomicrmw and cmpxchg in AssumeBundleBuilder (#194630) The assume builder currently only preserves dereferenceable, nonnull, and alignment knowledge for regular load/store instructions and calls. Atomic memory accessing instructions (atomicrmw and cmpxchg) also dereference their pointer operands, but were previously skipped, causing useful knowledge to be lost across these operations. Add handling for AtomicRMWInst and AtomicCmpXchgInst in AssumeBuilderState::addInstruction(), using the same addAccessedPtr() path as loads and stores. The accessed type is taken from the value operand (atomicrmw) or compare operand (cmpxchg), which corresponds to the in-memory element type, and the alignment is taken from the instruction's explicit alignment. Add a test to verify that assume bundles are correctly generated before atomicrmw and cmpxchg instructions. --------- Co-authored-by: Nikita Popov <github@npopov.com>
Parents
Loading