llvm-project/llvm/test
Pete Cooper 697281df42 Teach ObjCARC optimizer about equivalent PHIs when eliminating autoreleaseRV/retainRV pairs
OptimizeAutoreleaseRVCall skips optimizing llvm.objc.autoreleaseReturnValue if it
sees a user which is llvm.objc.retainAutoreleasedReturnValue, and if they have
equivalent arguments (either identical or equivalent PHIs). It then assumes that
ObjCARCOpt::OptimizeRetainRVCall will optimize the pair instead.

Trouble is, ObjCARCOpt::OptimizeRetainRVCall doesn't know about equivalent PHIs
so optimizes in a different way and we are left with an unoptimized llvm.objc.autoreleaseReturnValue.

This teaches ObjCARCOpt::OptimizeRetainRVCall to also understand PHI equivalence.

rdar://problem/47005143

Reviewed By: ahatanak

Differential Revision: https://reviews.llvm.org/D56235

llvm-svn: 350284
2019-01-03 01:38:08 +00:00
..
Analysis [BasicAA] Support arbitrary pointer sizes (and fix an overflow bug) 2019-01-02 16:28:09 +00:00
Assembler [IR] Don't assume all functions are 4 byte aligned 2018-12-07 08:34:59 +00:00
Bindings [DebugInfo] IR/Bitcode changes for DISubprogram flags. 2018-11-28 21:14:32 +00:00
Bitcode [ThinLTO] Compute synthetic function entry count 2018-12-13 19:54:27 +00:00
BugPoint [bugpoint][PR29027] Reduce function attributes 2018-12-19 03:42:19 +00:00
CodeGen [X86] Add load folding support to the custom isel we do for X86ISD::UMUL/SMUL. 2019-01-02 23:24:08 +00:00
DebugInfo [codeview] Check if this 'this' type of a method is a pointer 2018-12-26 21:52:17 +00:00
Demangle [MS Demangler] Fail gracefully on invalid pointer types. 2018-12-14 18:10:13 +00:00
Examples
ExecutionEngine Implement IMAGE_REL_AMD64_SECREL for RuntimeDyldCOFFX86_64 2018-12-12 00:04:06 +00:00
Feature
FileCheck [FileCheck] Try to fix test on windows due to r349418 2018-12-18 01:17:28 +00:00
Instrumentation [MSan] Handle llvm.is.constant intrinsic 2018-12-31 09:42:23 +00:00
Integer
JitListener
LTO [ThinLTO] Remove dllimport attribute from locally defined symbols 2018-12-19 19:07:45 +00:00
Linker Implement -frecord-command-line (-frecord-gcc-switches) 2018-12-14 15:38:15 +00:00
MC [WebAssembly] made assembler parse block_type 2019-01-02 23:23:51 +00:00
Object [Object] Deduplicate long archive member names 2018-12-19 16:15:05 +00:00
ObjectYAML [WebAssembly] Check if the section order is correct 2018-12-15 00:58:12 +00:00
Other [NewPM] -print-module-scope -print-after now prints module even after invalidated Loop/SCC 2018-12-21 11:49:05 +00:00
SafepointIRVerifier
SymbolRewriter
TableGen [tblgen][disasm] Emit record names again when decoder conflicts occur. 2019-01-03 00:14:33 +00:00
ThinLTO/X86 [ThinLTO] Scan all variants of vague symbol for reachability. 2019-01-02 23:18:20 +00:00
Transforms Teach ObjCARC optimizer about equivalent PHIs when eliminating autoreleaseRV/retainRV pairs 2019-01-03 01:38:08 +00:00
Unit [test] Fix propagating HOME envvar to unittests 2018-12-31 13:48:12 +00:00
Verifier Implement -frecord-command-line (-frecord-gcc-switches) 2018-12-14 15:38:15 +00:00
YAMLParser
tools [gold] emit assembly listing from gold plugin on LTO stage 2019-01-02 23:48:00 +00:00
.clang-format
CMakeLists.txt
TestRunner.sh
lit.cfg.py [lit]Add llvm-readelf to tool substitutions 2018-12-12 10:34:01 +00:00
lit.site.cfg.py.in