diff options
author | ahatanak <ahatanaka@apple.com> | 2020-03-09 13:20:58 -0700 |
---|---|---|
committer | ahatanak <ahatanaka@apple.com> | 2020-03-09 13:21:38 -0700 |
commit | 1f5b471b8bf4c6d22fb13d8e24bc31c75245b0d0 (patch) | |
tree | 13460a58da076553b71d5ccb20fb121bf5270c6b /llvm/docs/tutorial/MyFirstLanguageFrontend | |
parent | a50c031fab6747438af1454354ab85123558f6aa (diff) | |
download | llvm-1f5b471b8bf4c6d22fb13d8e24bc31c75245b0d0.zip llvm-1f5b471b8bf4c6d22fb13d8e24bc31c75245b0d0.tar.gz llvm-1f5b471b8bf4c6d22fb13d8e24bc31c75245b0d0.tar.bz2 |
[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
Diffstat (limited to 'llvm/docs/tutorial/MyFirstLanguageFrontend')
0 files changed, 0 insertions, 0 deletions