llvm-project/llvm/test/Transforms/ObjCARC
ahatanak 1f5b471b8b [ObjC][ARC] Don't remove autoreleaseRV/retainRV pairs if the call isn't
a tail call

Previosly ARC optimizer removed the autoreleaseRV/retainRV pair in the
following code, which caused the object returned by @something to be
placed in the autorelease pool because the call to @something isn't a
tail call:

```
  %call = call i8* @something(...)
  %2 = call i8* @objc_retainAutoreleasedReturnValue(i8* %call)
  %3 = call i8* @objc_autoreleaseReturnValue(i8* %2)
  ret i8* %3
```

Fix the bug by checking whether @something is a tail call.

rdar://problem/59275894
2020-03-09 13:21:38 -07:00
..
allocas.ll
apelim.ll
basic.ll
cfg-hazards.ll [ObjC][ARC] Don't move a retain call living outside a loop into the loop 2020-02-25 13:00:10 -08:00
clang-arc-use-barrier.ll
code-motion.ll
comdat-ipo.ll
contract-catchswitch.ll
contract-end-of-use-list.ll
contract-marker-funclet.ll
contract-marker.ll
contract-max-bb-size.ll
contract-replace-arg-use.ll
contract-storestrong-funclet.ll
contract-storestrong-ivar.ll
contract-storestrong.ll
contract-testcases.ll
contract.ll
empty-block.ll
ensure-that-exception-unwind-path-is-visited.ll
escape.ll
expand.ll
funclet.ll
gvn.ll
inert-global.ll [ObjC][ARC] Keep track of phis that have been discovered to avoid an 2020-02-07 20:33:11 -08:00
inlined-autorelease-return-value.ll llvm/ObjCARC: Eliminate inlined AutoreleaseRV calls 2019-11-19 12:02:01 -08:00
intrinsic-use-isolated.ll
intrinsic-use.ll
invoke-2.ll
invoke.ll
move-and-form-retain-autorelease.ll
move-and-merge-autorelease.ll
nested.ll [IR] Mark memset.* intrinsics as IntrWriteMem. 2020-01-16 10:35:46 +00:00
opt-catchswitch.ll
opt-max-ptr-states.ll
path-overflow.ll
pointer-types.ll
post-inlining.ll [ObjC][ARC] Ignore lifetime markers between *ReturnValue calls 2019-11-05 06:39:22 -08:00
pr12270.ll
provenance.ll
retain-block-side-effects.ll
retain-not-declared.ll
rle-s2l.ll
rv.ll [ObjC][ARC] Don't remove autoreleaseRV/retainRV pairs if the call isn't 2020-03-09 13:21:38 -07:00
split-backedge.ll
tail-call-invariant-enforcement.ll
unsafe-claim-rv.ll llvm/ObjCARC: Eliminate inlined AutoreleaseRV calls 2019-11-19 12:02:01 -08:00
weak-contract.ll
weak-copies.ll
weak-dce.ll
weak.ll