OSDN Git Service

2012-03-30 Jeffrey Yasskin <jyasskin@gcc.gnu.org>
authorpaolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 31 Mar 2012 01:57:14 +0000 (01:57 +0000)
committerpaolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 31 Mar 2012 01:57:14 +0000 (01:57 +0000)
    Paolo Carlini  <paolo.carlini@oracle.com>

PR libstdc++/52799
* include/bits/deque.tcc (emplace): Fix thinko, replace push_front
-> emplace_front, and likewise for *_back.
* testsuite/23_containers/deque/modifiers/emplace/52799.cc: New.
* testsuite/23_containers/list/modifiers/emplace/52799.cc: Likewise.
* testsuite/23_containers/vector/modifiers/emplace/52799.cc: Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@186036 138bc75d-0d04-0410-961f-82ee72b054a4

libstdc++-v3/ChangeLog
libstdc++-v3/include/bits/deque.tcc
libstdc++-v3/testsuite/23_containers/deque/modifiers/emplace/52799.cc [new file with mode: 0644]
libstdc++-v3/testsuite/23_containers/list/modifiers/emplace/52799.cc [new file with mode: 0644]
libstdc++-v3/testsuite/23_containers/vector/modifiers/emplace/52799.cc [new file with mode: 0644]

index 8d2b962..7befdaa 100644 (file)
@@ -1,3 +1,13 @@
+2012-03-30  Jeffrey Yasskin  <jyasskin@gcc.gnu.org>
+           Paolo Carlini  <paolo.carlini@oracle.com>
+
+       PR libstdc++/52799
+       * include/bits/deque.tcc (emplace): Fix thinko, replace push_front
+       -> emplace_front, and likewise for *_back.
+       * testsuite/23_containers/deque/modifiers/emplace/52799.cc: New.
+       * testsuite/23_containers/list/modifiers/emplace/52799.cc: Likewise.
+       * testsuite/23_containers/vector/modifiers/emplace/52799.cc: Likewise.
+
 2012-03-23  David S. Miller  <davem@davemloft.net>
 
        * config/abi/post/sparc-linux-gnu/baseline_symbols.txt: Update.
 2012-03-23  David S. Miller  <davem@davemloft.net>
 
        * config/abi/post/sparc-linux-gnu/baseline_symbols.txt: Update.
index 5b56875..fcece60 100644 (file)
@@ -1,7 +1,7 @@
 // Deque implementation (out of line) -*- C++ -*-
 
 // Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
 // Deque implementation (out of line) -*- C++ -*-
 
 // Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
-// 2009, 2010, 2011
+// 2009, 2010, 2011, 2012
 // Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
 // Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
@@ -175,12 +175,12 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
       {
        if (__position._M_cur == this->_M_impl._M_start._M_cur)
          {
       {
        if (__position._M_cur == this->_M_impl._M_start._M_cur)
          {
-           push_front(std::forward<_Args>(__args)...);
+           emplace_front(std::forward<_Args>(__args)...);
            return this->_M_impl._M_start;
          }
        else if (__position._M_cur == this->_M_impl._M_finish._M_cur)
          {
            return this->_M_impl._M_start;
          }
        else if (__position._M_cur == this->_M_impl._M_finish._M_cur)
          {
-           push_back(std::forward<_Args>(__args)...);
+           emplace_back(std::forward<_Args>(__args)...);
            iterator __tmp = this->_M_impl._M_finish;
            --__tmp;
            return __tmp;
            iterator __tmp = this->_M_impl._M_finish;
            --__tmp;
            return __tmp;
diff --git a/libstdc++-v3/testsuite/23_containers/deque/modifiers/emplace/52799.cc b/libstdc++-v3/testsuite/23_containers/deque/modifiers/emplace/52799.cc
new file mode 100644 (file)
index 0000000..35c4c44
--- /dev/null
@@ -0,0 +1,28 @@
+// { dg-options "-std=gnu++11" }
+// { dg-do compile }
+
+// Copyright (C) 2012 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
+// <http://www.gnu.org/licenses/>.
+
+#include <deque>
+
+// libstdc++/52799
+int main()
+{
+  std::deque<int> d;
+  d.emplace(d.begin());
+}
diff --git a/libstdc++-v3/testsuite/23_containers/list/modifiers/emplace/52799.cc b/libstdc++-v3/testsuite/23_containers/list/modifiers/emplace/52799.cc
new file mode 100644 (file)
index 0000000..314dd4a
--- /dev/null
@@ -0,0 +1,28 @@
+// { dg-options "-std=gnu++11" }
+// { dg-do compile }
+
+// Copyright (C) 2012 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
+// <http://www.gnu.org/licenses/>.
+
+#include <list>
+
+// libstdc++/52799
+int main()
+{
+  std::list<int> l;
+  l.emplace(l.begin());
+}
diff --git a/libstdc++-v3/testsuite/23_containers/vector/modifiers/emplace/52799.cc b/libstdc++-v3/testsuite/23_containers/vector/modifiers/emplace/52799.cc
new file mode 100644 (file)
index 0000000..f43057e
--- /dev/null
@@ -0,0 +1,28 @@
+// { dg-options "-std=gnu++11" }
+// { dg-do compile }
+
+// Copyright (C) 2012 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
+// <http://www.gnu.org/licenses/>.
+
+#include <vector>
+
+// libstdc++/52799
+int main()
+{
+  std::vector<int> v;
+  v.emplace(v.begin());
+}