[PATCH] Fix PR43505

Richard Guenther rguenther@suse.de
Fri Mar 26 18:32:00 GMT 2010


This fixes update_clone_info messing with types of variables in
the original bodies of clones.  Which looks bogus, but I can't
make sense of much of the code.  So, Honza, does this look ok?

Bootstrapped and tested on x86_64-unknown-linux-gnu.

Thanks,
Richard.

2010-03-26  Richard Guenther  <rguenther@suse.de>

	PR tree-optimization/43505
	* tree-inline.c (update_clone_info): Do not fiddle with the
	original tree.

Index: gcc/tree-inline.c
===================================================================
*** gcc/tree-inline.c	(revision 157751)
--- gcc/tree-inline.c	(working copy)
*************** update_clone_info (copy_body_data * id)
*** 4729,4736 ****
  	    {
  	      struct ipa_replace_map *replace_info;
  	      replace_info = VEC_index (ipa_replace_map_p, node->clone.tree_map, i);
! 	      walk_tree (&replace_info->old_tree, copy_tree_body_r, id, NULL);
! 	      walk_tree (&replace_info->new_tree, copy_tree_body_r, id, NULL);
  	    }
  	}
        if (node->clones)
--- 4729,4736 ----
  	    {
  	      struct ipa_replace_map *replace_info;
  	      replace_info = VEC_index (ipa_replace_map_p, node->clone.tree_map, i);
! 	      if (replace_info->replace_p)
! 		walk_tree (&replace_info->new_tree, copy_tree_body_r, id, NULL);
  	    }
  	}
        if (node->clones)



More information about the Gcc-patches mailing list