diff options
author | paolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4> | 2008-01-01 19:05:41 +0000 |
---|---|---|
committer | paolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4> | 2008-01-01 19:05:41 +0000 |
commit | d8d937a01d12a49b7b7b41400062f255341be9df (patch) | |
tree | 660d1b51df244b7375428064dc199e98a91e8409 /libstdc++-v3 | |
parent | 691c0f2fc548a74a75b11d1c76403e2fe89b9997 (diff) | |
download | gcc-d8d937a01d12a49b7b7b41400062f255341be9df.tar.gz |
2008-01-01 Paolo Carlini <pcarlini@suse.de>
PR libstdc++/34095
* include/parallel/multiway_merge.h (multiway_merge_bubble,
parallel_multiway_merge): Together with ::operator new use
::operator delete.
* include/parallel/losertree.h (LoserTree<>::~LoserTree): Likewise.
* include/parallel/quicksort.h (parallel_sort_qs_divide): Likewise.
* include/parallel/random_shuffle.h (parallel_random_shuffle_drs_pu,
sequential_random_shuffle): Likewise.
* include/parallel/tree.h (_M_not_sorted_bulk_insertion_construction):
Likewise.
* include/parallel/multiway_mergesort.h (parallel_sort_mwms_pu,
parallel_sort_mwms): Likewise.
* include/parallel/partial_sum.h (parallel_partial_sum_linear):
Likewise.
* testsuite/25_algorithms/sort/34095.cc: New.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@131247 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libstdc++-v3')
-rw-r--r-- | libstdc++-v3/ChangeLog | 18 | ||||
-rw-r--r-- | libstdc++-v3/include/parallel/losertree.h | 4 | ||||
-rw-r--r-- | libstdc++-v3/include/parallel/multiway_merge.h | 6 | ||||
-rw-r--r-- | libstdc++-v3/include/parallel/multiway_mergesort.h | 6 | ||||
-rw-r--r-- | libstdc++-v3/include/parallel/partial_sum.h | 4 | ||||
-rw-r--r-- | libstdc++-v3/include/parallel/quicksort.h | 4 | ||||
-rw-r--r-- | libstdc++-v3/include/parallel/random_shuffle.h | 6 | ||||
-rw-r--r-- | libstdc++-v3/include/parallel/tree.h | 4 | ||||
-rw-r--r-- | libstdc++-v3/testsuite/25_algorithms/sort/34095.cc | 33 |
9 files changed, 68 insertions, 17 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index e53a51b0e47..29a6b53359c 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,5 +1,23 @@ 2008-01-01 Paolo Carlini <pcarlini@suse.de> + PR libstdc++/34095 + * include/parallel/multiway_merge.h (multiway_merge_bubble, + parallel_multiway_merge): Together with ::operator new use + ::operator delete. + * include/parallel/losertree.h (LoserTree<>::~LoserTree): Likewise. + * include/parallel/quicksort.h (parallel_sort_qs_divide): Likewise. + * include/parallel/random_shuffle.h (parallel_random_shuffle_drs_pu, + sequential_random_shuffle): Likewise. + * include/parallel/tree.h (_M_not_sorted_bulk_insertion_construction): + Likewise. + * include/parallel/multiway_mergesort.h (parallel_sort_mwms_pu, + parallel_sort_mwms): Likewise. + * include/parallel/partial_sum.h (parallel_partial_sum_linear): + Likewise. + * testsuite/25_algorithms/sort/34095.cc: New. + +2008-01-01 Paolo Carlini <pcarlini@suse.de> + * testsuite/25_algorithms/sort/34636.cc: Fix Copyright year. 2008-01-01 Paolo Carlini <pcarlini@suse.de> diff --git a/libstdc++-v3/include/parallel/losertree.h b/libstdc++-v3/include/parallel/losertree.h index 2f2fae711da..786b8fb12fb 100644 --- a/libstdc++-v3/include/parallel/losertree.h +++ b/libstdc++-v3/include/parallel/losertree.h @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2007 Free Software Foundation, Inc. +// Copyright (C) 2007, 2008 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 @@ -250,7 +250,7 @@ template<typename T, typename Comparator = std::less<T> > } inline ~LoserTree() - { delete[] losers; } + { ::operator delete(losers); } inline int get_min_source() diff --git a/libstdc++-v3/include/parallel/multiway_merge.h b/libstdc++-v3/include/parallel/multiway_merge.h index 818049cde85..98f19c2478f 100644 --- a/libstdc++-v3/include/parallel/multiway_merge.h +++ b/libstdc++-v3/include/parallel/multiway_merge.h @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2007 Free Software Foundation, Inc. +// Copyright (C) 2007, 2008 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 @@ -936,7 +936,7 @@ template< } } - delete fe; //Destructors already called. + ::operator delete(fe); //Destructors already called. delete[] source; return target; @@ -1622,7 +1622,7 @@ template< else pieces[slab][seq].second = _GLIBCXX_PARALLEL_LENGTH(seqs_begin[seq]); } - delete[] samples; + ::operator delete(samples); } else { diff --git a/libstdc++-v3/include/parallel/multiway_mergesort.h b/libstdc++-v3/include/parallel/multiway_mergesort.h index e54185069c9..502cfab4557 100644 --- a/libstdc++-v3/include/parallel/multiway_mergesort.h +++ b/libstdc++-v3/include/parallel/multiway_mergesort.h @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2007 Free Software Foundation, Inc. +// Copyright (C) 2007, 2008 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 @@ -321,7 +321,7 @@ template<typename RandomAccessIterator, typename Comparator> sd->source + offset); #endif - delete[] sd->temporaries[iam]; + ::operator delete(sd->temporaries[iam]); } /** @brief PMWMS main call. @@ -415,7 +415,7 @@ template<typename RandomAccessIterator, typename Comparator> delete[] sd.merging_places; if (Settings::sort_splitting == Settings::SAMPLING) - delete[] sd.samples; + ::operator delete(sd.samples); delete[] sd.offsets; delete[] sd.pieces; diff --git a/libstdc++-v3/include/parallel/partial_sum.h b/libstdc++-v3/include/parallel/partial_sum.h index e4a4276f3a4..c165729d86a 100644 --- a/libstdc++-v3/include/parallel/partial_sum.h +++ b/libstdc++-v3/include/parallel/partial_sum.h @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2007 Free Software Foundation, Inc. +// Copyright (C) 2007, 2008 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 @@ -182,7 +182,7 @@ template< sums[iam]); } //parallel - delete[] sums; + ::operator delete(sums); delete[] borders; return result + n; diff --git a/libstdc++-v3/include/parallel/quicksort.h b/libstdc++-v3/include/parallel/quicksort.h index d94a49d5251..9228647d5e0 100644 --- a/libstdc++-v3/include/parallel/quicksort.h +++ b/libstdc++-v3/include/parallel/quicksort.h @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2007 Free Software Foundation, Inc. +// Copyright (C) 2007, 2008 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 @@ -91,7 +91,7 @@ namespace __gnu_parallel pred(comp, pivot); difference_type split = parallel_partition(begin, end, pred, num_threads); - delete[] samples; + ::operator delete(samples); return split; } diff --git a/libstdc++-v3/include/parallel/random_shuffle.h b/libstdc++-v3/include/parallel/random_shuffle.h index 663962b43f3..dd086baf3ec 100644 --- a/libstdc++-v3/include/parallel/random_shuffle.h +++ b/libstdc++-v3/include/parallel/random_shuffle.h @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2007 Free Software Foundation, Inc. +// Copyright (C) 2007, 2008 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 @@ -237,7 +237,7 @@ template<typename RandomAccessIterator, typename RandomNumberGenerator> ((b == d->bins_begin) ? 0 : sd->dist[b][d->num_threads])); } - delete[] sd->temporaries[iam]; + ::operator delete(sd->temporaries[iam]); } /** @brief Round up to the next greater power of 2. @@ -490,7 +490,7 @@ template<typename RandomAccessIterator, typename RandomNumberGenerator> delete[] dist0; delete[] dist1; delete[] oracles; - delete[] target; + ::operator delete(target); } else __gnu_sequential::random_shuffle(begin, end, rng); diff --git a/libstdc++-v3/include/parallel/tree.h b/libstdc++-v3/include/parallel/tree.h index eae33c0cba2..eed0b929315 100644 --- a/libstdc++-v3/include/parallel/tree.h +++ b/libstdc++-v3/include/parallel/tree.h @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2007 Free Software Foundation, Inc. +// Copyright (C) 2007, 2008 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 @@ -1344,7 +1344,7 @@ namespace __gnu_parallel _M_sorted_bulk_construction(sorted_access, beg_partition, n, num_threads, strictly_less_or_less_equal); else _M_sorted_bulk_insertion(sorted_access, beg_partition, n, num_threads, strictly_less_or_less_equal); - delete v; + ::operator delete(v); } /** @brief Construct a tree sequentially using the parallel routine diff --git a/libstdc++-v3/testsuite/25_algorithms/sort/34095.cc b/libstdc++-v3/testsuite/25_algorithms/sort/34095.cc new file mode 100644 index 00000000000..46e906b5bc5 --- /dev/null +++ b/libstdc++-v3/testsuite/25_algorithms/sort/34095.cc @@ -0,0 +1,33 @@ +// Copyright (C) 2008 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 2, 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 COPYING. If not, write to the Free +// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, +// USA. + +#include <vector> +#include <algorithm> + +// libstdc++/34095 +void test01() +{ + std::vector<std::vector<int> > v(20000); + std::sort(v.begin(), v.end()); +} + +int main() +{ + test01(); + return 0; +} |