On Dec 9, 2013, at 7:04 AM, Alp Toker <[email protected]> wrote: > Hi Marshall, > > This commit broke the build on Fedora 19 g++ (GCC) 4.8.2 20131017 (Red Hat > 4.8.2-1) > > I've attached the build failure log. Reverting it fixes the LLVM ToT build > with libcxx. > > CC'ing in Bill since this has been merged into the 3.4 branch.
Sorry, Alp - Somehow I missed this email. — Marshall > > Alp. > > > On 02/12/2013 03:24, Marshall Clow wrote: >> Author: marshall >> Date: Sun Dec 1 21:24:33 2013 >> New Revision: 196058 >> >> URL: http://llvm.org/viewvc/llvm-project?rev=196058&view=rev >> Log: >> Fix for PRPR17934; based on a fix suggested by Peter Sommerlad >> >> Modified: >> libcxx/trunk/include/iterator >> libcxx/trunk/test/containers/sequences/array/iterators.pass.cpp >> libcxx/trunk/test/iterators/iterator.range/begin-end.pass.cpp >> >> Modified: libcxx/trunk/include/iterator >> URL: >> http://llvm.org/viewvc/llvm-project/libcxx/trunk/include/iterator?rev=196058&r1=196057&r2=196058&view=diff >> ============================================================================== >> --- libcxx/trunk/include/iterator (original) >> +++ libcxx/trunk/include/iterator Sun Dec 1 21:24:33 2013 >> @@ -1387,6 +1387,22 @@ operator+(typename __wrap_iter<_Iter>::d >> #if !defined(_LIBCPP_HAS_NO_RVALUE_REFERENCES) && >> !defined(_LIBCPP_HAS_NO_TRAILING_RETURN) >> +template <class _Tp, size_t _Np> >> +inline _LIBCPP_INLINE_VISIBILITY >> +_Tp* >> +begin(_Tp (&__array)[_Np]) >> +{ >> + return __array; >> +} >> + >> +template <class _Tp, size_t _Np> >> +inline _LIBCPP_INLINE_VISIBILITY >> +_Tp* >> +end(_Tp (&__array)[_Np]) >> +{ >> + return __array + _Np; >> +} >> + >> template <class _Cp> >> inline _LIBCPP_INLINE_VISIBILITY >> auto >> @@ -1421,18 +1437,46 @@ end(const _Cp& __c) -> decltype(__c.end( >> #if _LIBCPP_STD_VER > 11 >> +template <class _Tp, size_t _Np> >> +inline _LIBCPP_INLINE_VISIBILITY >> +reverse_iterator<_Tp*> rbegin(_Tp (&__array)[_Np]) >> +{ >> + return reverse_iterator<_Tp*>(__array + _Np); >> +} >> + >> +template <class _Tp, size_t _Np> >> +inline _LIBCPP_INLINE_VISIBILITY >> +reverse_iterator<_Tp*> rend(_Tp (&__array)[_Np]) >> +{ >> + return reverse_iterator<_Tp*>(__array); >> +} >> + >> +template <class _Ep> >> +inline _LIBCPP_INLINE_VISIBILITY >> +reverse_iterator<const _Ep*> rbegin(initializer_list<_Ep> __il) >> +{ >> + return reverse_iterator<const _Ep*>(__il.end()); >> +} >> + >> +template <class _Ep> >> +inline _LIBCPP_INLINE_VISIBILITY >> +reverse_iterator<const _Ep*> rend(initializer_list<_Ep> __il) >> +{ >> + return reverse_iterator<const _Ep*>(__il.begin()); >> +} >> + >> template <class _Cp> >> inline _LIBCPP_INLINE_VISIBILITY >> auto cbegin(const _Cp& __c) -> decltype(begin(__c)) >> { >> - return __c.begin(); >> + return _VSTD::begin(__c); >> } >> template <class _Cp> >> inline _LIBCPP_INLINE_VISIBILITY >> auto cend(const _Cp& __c) -> decltype(end(__c)) >> { >> - return __c.end(); >> + return _VSTD::end(__c); >> } >> template <class _Cp> >> @@ -1516,53 +1560,6 @@ end(const _Cp& __c) >> #endif // !defined(_LIBCPP_HAS_NO_RVALUE_REFERENCES) && >> !defined(_LIBCPP_HAS_NO_TRAILING_RETURN) >> -template <class _Tp, size_t _Np> >> -inline _LIBCPP_INLINE_VISIBILITY >> -_Tp* >> -begin(_Tp (&__array)[_Np]) >> -{ >> - return __array; >> -} >> - >> -template <class _Tp, size_t _Np> >> -inline _LIBCPP_INLINE_VISIBILITY >> -_Tp* >> -end(_Tp (&__array)[_Np]) >> -{ >> - return __array + _Np; >> -} >> - >> -#if _LIBCPP_STD_VER > 11 >> -template <class _Tp, size_t _Np> >> -inline _LIBCPP_INLINE_VISIBILITY >> -reverse_iterator<_Tp*> rbegin(_Tp (&__array)[_Np]) >> -{ >> - return reverse_iterator<_Tp*>(__array + _Np); >> -} >> - >> -template <class _Tp, size_t _Np> >> -inline _LIBCPP_INLINE_VISIBILITY >> -reverse_iterator<_Tp*> rend(_Tp (&__array)[_Np]) >> -{ >> - return reverse_iterator<_Tp*>(__array); >> -} >> - >> -template <class _Ep> >> -inline _LIBCPP_INLINE_VISIBILITY >> -reverse_iterator<const _Ep*> rbegin(initializer_list<_Ep> __il) >> -{ >> - return reverse_iterator<const _Ep*>(__il.end()); >> -} >> - >> -template <class _Ep> >> -inline _LIBCPP_INLINE_VISIBILITY >> -reverse_iterator<const _Ep*> rend(initializer_list<_Ep> __il) >> -{ >> - return reverse_iterator<const _Ep*>(__il.begin()); >> -} >> - >> -#endif >> - >> _LIBCPP_END_NAMESPACE_STD >> #endif // _LIBCPP_ITERATOR >> >> Modified: libcxx/trunk/test/containers/sequences/array/iterators.pass.cpp >> URL: >> http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/containers/sequences/array/iterators.pass.cpp?rev=196058&r1=196057&r2=196058&view=diff >> ============================================================================== >> --- libcxx/trunk/test/containers/sequences/array/iterators.pass.cpp >> (original) >> +++ libcxx/trunk/test/containers/sequences/array/iterators.pass.cpp Sun Dec >> 1 21:24:33 2013 >> @@ -50,11 +50,20 @@ int main() >> assert ( !(ii1 != ii2 )); >> assert ( !(ii1 != cii )); >> -// C c; >> -// assert ( ii1 != c.cbegin()); >> -// assert ( cii != c.begin()); >> -// assert ( cii != c.cend()); >> -// assert ( ii1 != c.end()); >> + C c; >> + assert ( c.begin() == std::begin(c)); >> + assert ( c.cbegin() == std::cbegin(c)); >> + assert ( c.rbegin() == std::rbegin(c)); >> + assert ( c.crbegin() == std::crbegin(c)); >> + assert ( c.end() == std::end(c)); >> + assert ( c.cend() == std::cend(c)); >> + assert ( c.rend() == std::rend(c)); >> + assert ( c.crend() == std::crend(c)); >> + >> + assert ( std::begin(c) != std::end(c)); >> + assert ( std::rbegin(c) != std::rend(c)); >> + assert ( std::cbegin(c) != std::cend(c)); >> + assert ( std::crbegin(c) != std::crend(c)); >> } >> { >> typedef std::array<int, 0> C; >> @@ -68,11 +77,20 @@ int main() >> assert ( !(ii1 != ii2 )); >> assert ( !(ii1 != cii )); >> -// C c; >> -// assert ( ii1 != c.cbegin()); >> -// assert ( cii != c.begin()); >> -// assert ( cii != c.cend()); >> -// assert ( ii1 != c.end()); >> + C c; >> + assert ( c.begin() == std::begin(c)); >> + assert ( c.cbegin() == std::cbegin(c)); >> + assert ( c.rbegin() == std::rbegin(c)); >> + assert ( c.crbegin() == std::crbegin(c)); >> + assert ( c.end() == std::end(c)); >> + assert ( c.cend() == std::cend(c)); >> + assert ( c.rend() == std::rend(c)); >> + assert ( c.crend() == std::crend(c)); >> + >> + assert ( std::begin(c) == std::end(c)); >> + assert ( std::rbegin(c) == std::rend(c)); >> + assert ( std::cbegin(c) == std::cend(c)); >> + assert ( std::crbegin(c) == std::crend(c)); >> } >> } >> #endif >> >> Modified: libcxx/trunk/test/iterators/iterator.range/begin-end.pass.cpp >> URL: >> http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/iterators/iterator.range/begin-end.pass.cpp?rev=196058&r1=196057&r2=196058&view=diff >> ============================================================================== >> --- libcxx/trunk/test/iterators/iterator.range/begin-end.pass.cpp (original) >> +++ libcxx/trunk/test/iterators/iterator.range/begin-end.pass.cpp Sun Dec 1 >> 21:24:33 2013 >> @@ -52,6 +52,7 @@ void test_const_container( const std::in >> assert ( std::end(c) == c.end()); >> #if _LIBCPP_STD_VER > 11 >> // initializer_list doesn't have cbegin/cend/rbegin/rend >> +// but std::cbegin(),etc work (b/c they're general fn templates) >> // assert ( std::cbegin(c) == c.cbegin()); >> // assert ( std::cbegin(c) != c.cend()); >> // assert ( std::cend(c) == c.cend()); >> >> >> _______________________________________________ >> cfe-commits mailing list >> [email protected] >> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits > > -- > http://www.nuanti.com > the browser experts > > <libcxx-fedora19.txt> _______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
