Patchwork Ping: Re: [patch middle-end]: Fix PR/48814 - [4.4/4.5/4.6/4.7 Regression] Incorrect scalar increment result

login
register
mail settings
Submitter Benjamin Kosnik
Date March 19, 2012, 9:42 p.m.
Message ID <20120319144241.6d3f598a@adair>
Download mbox | patch
Permalink /patch/147647/
State New
Headers show

Comments

Benjamin Kosnik - March 19, 2012, 9:42 p.m.
On Fri, 16 Mar 2012 11:10:48 +0100
Richard Guenther <richard.guenther@gmail.com> wrote:

> On Fri, Mar 16, 2012 at 1:29 AM, Jonathan Wakely
> <jwakely.gcc@gmail.com> wrote:
> > On 15 March 2012 15:40, Richard Guenther wrote:
> >> On Thu, Mar 15, 2012 at 4:22 PM, Kai Tietz
> >> <ktietz70@googlemail.com> wrote:
> >>> Richard,
> >>>
> >>> ping.  I think now could be a good time for applying the patch you
> >>> have for this issue as we are in stage 1.
> >>
> >> It will still regress the two libstdc++ testcases (well, I guess
> >> so at least).
> >>
> >> Jonathan - you didn't answer my reply to your question?  Would it
> >> be ok to apply this patch with leaving the regressions in-place,
> >> to be investigated by libstdc++ folks?
> >
> > Sorry, I've either forgotten or missed the reply - but if you think
> > the problem is in libstdc++ then certainly go ahead and apply it,
> > I'll investigate the libstdc++ problems (and ask for help if they
> > defeat me!)
> 
> Ok.  I'll do so after re-testing the patch.

FYI, here is the patch for the new libstdc++ fails.

-benjamin

Patch

2012-03-19  Benjamin Kosnik  <bkoz@redhat.com>

	    * include/ext/pb_ds/detail/pat_trie_/
	    constructors_destructor_fn_imps.hpp: Increment after recursion.
	    * include/ext/pb_ds/detail/pat_trie_/pat_trie_base.hpp: Convert
	    node_type markup from brief.


diff --git a/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/constructors_destructor_fn_imps.hpp b/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/constructors_destructor_fn_imps.hpp
index 8370a2e..c5748ec 100644
--- a/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/constructors_destructor_fn_imps.hpp
+++ b/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/constructors_destructor_fn_imps.hpp
@@ -1,6 +1,6 @@ 
  // -*- C++ -*-
 
-// Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011
+// Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012
 // Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
@@ -188,7 +188,11 @@  recursive_copy_node(node_const_pointer p_ncp)
   __try
     {
       while (child_it != p_icp->end())
-	a_p_children[child_i++] = recursive_copy_node(*(child_it++));
+	{
+	  a_p_children[child_i] = recursive_copy_node(*(child_it));
+	  child_i++;
+	  child_it++;
+	}
       p_ret = s_inode_allocator.allocate(1);
     }
   __catch(...)
diff --git a/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/pat_trie_base.hpp b/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/pat_trie_base.hpp
index b7eb024..0a763b5 100644
--- a/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/pat_trie_base.hpp
+++ b/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/pat_trie_base.hpp
@@ -1,6 +1,6 @@ 
 // -*- C++ -*-
 
-// Copyright (C) 2005, 2006, 2009, 2011 Free Software Foundation, Inc.
+// Copyright (C) 2005, 2006, 2009, 2011, 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
@@ -50,7 +50,11 @@  namespace __gnu_pbds
     /// Base type for PATRICIA trees.
     struct pat_trie_base
     {
-      /// Three types of nodes.
+      /**
+       *  @brief  Three types of nodes.
+       *
+       *  i_node is used by _Inode, leaf_node by _Leaf, and head_node by _Head.
+       */
       enum node_type
 	{
 	  i_node,