[libcxx] r196058 - Fix for PRPR17934; based on a fix suggested by Peter Sommerlad
Bill Wendling
isanbard at gmail.com
Tue Dec 10 23:31:25 PST 2013
Thanks. I reverted it.
On Dec 9, 2013, at 7:04 AM, Alp Toker <alp at nuanti.com> 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.
>
> 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
>> cfe-commits at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
>
> --
> http://www.nuanti.com
> the browser experts
>
> <libcxx-fedora19.txt>
More information about the cfe-commits
mailing list