Message ID | 20140418130809.GB12215@virgil.suse |
---|---|
State | New |
Headers | show |
On Fri, Apr 18, 2014 at 03:08:09PM +0200, Martin Jambor wrote: > On Fri, Apr 18, 2014 at 01:49:36PM +0200, Jakub Jelinek wrote: > > It reproduces on x86_64 too, I guess the reason why you aren't seeing this > > is that you might have too old assembler that doesn't support > > avx2 instructions (you actually don't need avx2 hw to reproduce, any > > x86_64 or i686 just with gas that supports avx2 should be enough). > > > > I see, with that information I have managed to reproduce the failures > and now am convinced the patch (re-posted below) is indeed the correct > thing to do. I am going to bootstrap it over the weekend (can't do it > earlier to test these testcases). Honza, is it OK for trunk if it > passes? The patch has passed boostrap and testing on x86_64 with AVX support, Honza approved it on IRC and so I have committed it to trunk. Thanks, Martin > > 2014-04-18 Martin Jambor <mjambor@suse.cz> > > * cgraphclones.c (cgraph_function_versioning): Copy > ipa_transforms_to_apply instead of asserting it is empty. > > Index: src/gcc/cgraphclones.c > =================================================================== > --- src.orig/gcc/cgraphclones.c > +++ src/gcc/cgraphclones.c > @@ -974,7 +974,9 @@ cgraph_function_versioning (struct cgrap > cgraph_copy_node_for_versioning (old_version_node, new_decl, > redirect_callers, bbs_to_copy); > > - gcc_assert (!old_version_node->ipa_transforms_to_apply.exists ()); > + if (old_version_node->ipa_transforms_to_apply.exists ()) > + new_version_node->ipa_transforms_to_apply > + = old_version_node->ipa_transforms_to_apply.copy (); > /* Copy the OLD_VERSION_NODE function tree to the new version. */ > tree_function_versioning (old_decl, new_decl, tree_map, false, args_to_skip, > skip_return, bbs_to_copy, new_entry_block); >
Index: src/gcc/cgraphclones.c =================================================================== --- src.orig/gcc/cgraphclones.c +++ src/gcc/cgraphclones.c @@ -974,7 +974,9 @@ cgraph_function_versioning (struct cgrap cgraph_copy_node_for_versioning (old_version_node, new_decl, redirect_callers, bbs_to_copy); - gcc_assert (!old_version_node->ipa_transforms_to_apply.exists ()); + if (old_version_node->ipa_transforms_to_apply.exists ()) + new_version_node->ipa_transforms_to_apply + = old_version_node->ipa_transforms_to_apply.copy (); /* Copy the OLD_VERSION_NODE function tree to the new version. */ tree_function_versioning (old_decl, new_decl, tree_map, false, args_to_skip, skip_return, bbs_to_copy, new_entry_block);