llvm-6502/test
Michael Gottesman 0d92a3c600 [ObjCARC] Strength reduce objc_retainBlock -> objc_retain if the objc_retainBlock is optimizable.
If an objc_retainBlock has the copy_on_escape metadata attached to it
AND if the block pointer argument only escapes down the stack, we are
allowed to strength reduce the objc_retainBlock to to an objc_retain and
thus optimize it.

Current there is logic in the ARC data flow analysis to handle
this case which is complicated and involved making distinctions in
between objc_retainBlock and objc_retain in certain places and
considering them the same in others.

This patch simplifies said code by:

1. Performing the strength reduction in the initial ARC peephole
analysis (ObjCARCOpts::OptimizeIndividualCalls).

2. Changes the ARC dataflow analysis (which runs after the peephole
analysis) to consider all objc_retainBlock calls to not be optimizable
(since if the call was optimizable, we would have strength reduced it
already).

This patch leaves in the infrastructure in the ARC dataflow analysis to
handle this case, which due to 2 will just be dead code. I am doing this
on purpose to separate the removal of the old code from the testing of
the new code.

<rdar://problem/13249661>.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178284 91177308-0d34-0410-b5e6-96231b3b80d8
2013-03-28 20:11:19 +00:00
..
Analysis Fix SCEV forgetMemoizedResults should search and destroy backedge exprs. 2013-03-26 03:14:53 +00:00
Archive
Assembler Correct invalid debug info metadata 2013-03-12 19:04:24 +00:00
Bindings/Ocaml Use the attribute group reference instead of the attribute directly. 2013-02-20 07:48:23 +00:00
Bitcode Unify clang/llvm attributes for asan/tsan/msan (LLVM part) 2013-02-26 06:58:09 +00:00
BugPoint
CodeGen Hexagon: Enable SupportDebugInfomation and DwarfInSection flags. 2013-03-28 19:34:49 +00:00
DebugInfo Revert "Adding DIImportedModules to DIScopes." 2013-03-28 02:44:59 +00:00
ExecutionEngine Disable Execution Engine tests not supported by Hexagon. 2013-03-25 20:02:14 +00:00
Feature Modify the LLVM assembly output so that it uses references to represent function attributes. 2013-02-20 07:21:42 +00:00
FileCheck Canonicalize line endings to Linux style also when the --strict-whitespace flag is in use. This flag is supposed to affect horizontal whitespaces only. 2013-02-06 20:40:38 +00:00
Instrumentation [tsan] make sure memset/memcpy/memmove are not inlined in tsan mode 2013-03-28 11:21:13 +00:00
Integer
JitListener Add support for source and line information to IntelJITEventListener for object emitted by MCJIT. 2013-01-28 19:52:37 +00:00
Linker Linker: correctly link in dbg.declare 2013-01-31 21:19:18 +00:00
MC Fix issue with disassembler decoding CBZ/CBNZ immediates as negatives when the upper bit is set. 2013-03-28 19:22:28 +00:00
Object [tools][llvm-readobj] print the name of the section when iterating the symbol table / dynamic symbol table 2013-03-25 16:06:51 +00:00
Other Check isDiscardableIfUnused, rather than hasLocalLinkage, when bumping 2013-03-04 22:40:44 +00:00
Scripts Set the +x bit on two batch scripts 2013-01-25 22:12:50 +00:00
TableGen Allow TableGen DAG arguments to be just a name. 2013-03-24 19:36:51 +00:00
tools PR10867: Analogue of r169441 for when using external 'sh'. And actually run the test! 2012-12-05 23:15:33 +00:00
Transforms [ObjCARC] Strength reduce objc_retainBlock -> objc_retain if the objc_retainBlock is optimizable. 2013-03-28 20:11:19 +00:00
Unit Disable ASan/MSan symbolization of reports in tests. 2013-03-27 13:11:12 +00:00
Verifier [IR] Add 'Append' and 'AppendUnique' module flag behaviors. 2013-01-16 21:38:56 +00:00
YAMLParser
CMakeLists.txt Add llvm-symbolizer as test dependency. 2013-03-13 09:35:18 +00:00
lit.cfg Disable ASan/MSan symbolization of reports in tests. 2013-03-27 13:11:12 +00:00
lit.site.cfg.in Add asan/msan to the list of available features in LIT test runner 2013-03-26 08:27:39 +00:00
Makefile Reverted r176374. In some cases the lit.site.cfg file does not get generated in tools/clang/tools/extra. 2013-03-22 18:54:14 +00:00
Makefile.tests
TestRunner.sh