diff --git a/pkgs/development/compilers/gcc/4.8/bug-58800.patch b/pkgs/development/compilers/gcc/4.8/bug-58800.patch new file mode 100644 index 000000000000..c8e8666761a8 --- /dev/null +++ b/pkgs/development/compilers/gcc/4.8/bug-58800.patch @@ -0,0 +1,79 @@ +Index: gcc-4_8-branch/libstdc++-v3/include/bits/stl_algo.h +=================================================================== +--- gcc-4_8-branch/libstdc++-v3/include/bits/stl_algo.h (revision 203872) ++++ gcc-4_8-branch/libstdc++-v3/include/bits/stl_algo.h (revision 203873) +@@ -2279,7 +2279,7 @@ + _RandomAccessIterator __last) + { + _RandomAccessIterator __mid = __first + (__last - __first) / 2; +- std::__move_median_to_first(__first, __first + 1, __mid, (__last - 2)); ++ std::__move_median_to_first(__first, __first + 1, __mid, __last - 1); + return std::__unguarded_partition(__first + 1, __last, *__first); + } + +@@ -2291,7 +2291,7 @@ + _RandomAccessIterator __last, _Compare __comp) + { + _RandomAccessIterator __mid = __first + (__last - __first) / 2; +- std::__move_median_to_first(__first, __first + 1, __mid, (__last - 2), ++ std::__move_median_to_first(__first, __first + 1, __mid, __last - 1, + __comp); + return std::__unguarded_partition(__first + 1, __last, *__first, __comp); + } +Index: gcc-4_8-branch/libstdc++-v3/testsuite/25_algorithms/nth_element/58800.cc +=================================================================== +--- gcc-4_8-branch/libstdc++-v3/testsuite/25_algorithms/nth_element/58800.cc (revision 0) ++++ gcc-4_8-branch/libstdc++-v3/testsuite/25_algorithms/nth_element/58800.cc (revision 203873) +@@ -0,0 +1,52 @@ ++// Copyright (C) 2013 Free Software Foundation, Inc. ++// ++// This file is part of the GNU ISO C++ Library. This library is free ++// software; you can redistribute it and/or modify it under the ++// terms of the GNU General Public License as published by the ++// Free Software Foundation; either version 3, or (at your option) ++// any later version. ++ ++// This library is distributed in the hope that it will be useful, ++// but WITHOUT ANY WARRANTY; without even the implied warranty of ++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++// GNU General Public License for more details. ++ ++// You should have received a copy of the GNU General Public License along ++// with this library; see the file COPYING3. If not see ++// . ++ ++// 25.3.2 [lib.alg.nth.element] ++ ++// { dg-options "-std=gnu++11" } ++ ++#include ++#include ++#include ++ ++using __gnu_test::test_container; ++using __gnu_test::random_access_iterator_wrapper; ++ ++typedef test_container Container; ++ ++void test01() ++{ ++ std::vector v = { ++ 207089, ++ 202585, ++ 180067, ++ 157549, ++ 211592, ++ 216096, ++ 207089 ++ }; ++ ++ Container con(v.data(), v.data() + 7); ++ ++ std::nth_element(con.begin(), con.begin() + 3, con.end()); ++} ++ ++int main() ++{ ++ test01(); ++ return 0; ++} diff --git a/pkgs/development/compilers/gcc/4.8/default.nix b/pkgs/development/compilers/gcc/4.8/default.nix index aea525933234..890122fe4770 100644 --- a/pkgs/development/compilers/gcc/4.8/default.nix +++ b/pkgs/development/compilers/gcc/4.8/default.nix @@ -62,7 +62,7 @@ let version = "4.8.2"; */ enableParallelBuilding = !profiledCompiler; - patches = [] + patches = [ ./bug-58800.patch ] # http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58800 ++ optional enableParallelBuilding ./parallel-bconfig.patch ++ optional (cross != null) ./libstdc++-target.patch # ++ optional noSysDirs ./no-sys-dirs.patch