K 10 svn:author V 3 dim K 8 svn:date V 27 2013-05-11T21:23:55.844999Z K 7 svn:log V 1133 Pull in r178240 from upstream llvm trunk: Section 24.2.2 of the C++ standard, [iterator.iterators], Table 106 requires that the return type of *r for all iterators r be reference, where reference is defined in [iterator.requirements.general]/p11 as iterator_traits::reference, and X is the type of r. But in CFG.h, the dereference operator of PredIterator and SuccIterator return pointer, not reference. Furthermore the nested type reference is value_type&, which is not the type returned from operator*(). This patch simply makes the iterator::reference type value_type*, which is what the operator*() returns, and then re-lables the return type as reference. From a functionality point of view, the only difference is that the nested reference type is now value_type* instead of value_type&. This enables building clang 3.2 with the newer version of libc++ that was merged in r250514 (and which has stricter iterator requirements for the vector member templates). This is a direct commit to stable/9, since head has a complete import of llvm/clang trunk, and there is no single commit to merge. END