[objc-arc] Teach the ARC optimizer that objc_sync_enter/objc_sync_exit do not modify the ref count of an objc object and additionally are inert for modref purposes.
[objc-arc] Remove the alias analysis part of r185764.

Upon further reflection, the alias analysis part of r185764 is not a safe
change.
Documentation cleanup for include/clang/AST/DeclCXX.h, no substantive changes.
* Fix up \brief documentation;
* Update C++0x references to C++11;
* Doxygen formatting: bulleted lists start with a single hyphen, not two;
* Fix a typo, "assosiate" -> "associate".
Rename test to match C++1y paragraph number per N3690, and add additional test
case inspired by a stackoverflow question.
Fixed source range for functional cast and unresolved construct expr nodes.
Added testcases.
SLPVectorizer: Implement DCE as part of vectorization.

This is a complete re-write if the bottom-up vectorization class.
Before this commit we scanned the instruction tree 3 times. First in search of merge points for the trees. Second, for estimating the cost. And finally for vectorization.
There was a lot of code duplication and adding the DCE exposed bugs. The new design is simpler and DCE was a part of the design.
In this implementation we build the tree once. After that we estimate the cost by scanning the different entries in the constructed tree (in any order). The vectorization phase also works on the built tree.
Add missing per-argument doesNotAccessMemory accessors. No functionality change
since it has no callers today.
Eliminate trivial redundant loads across nocapture+readonly calls to uncaptured
pointer arguments.