This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug ipa/65270] issues with merging memory accesses from different code paths
- From: "rguenther at suse dot de" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Fri, 06 Mar 2015 08:32:13 +0000
- Subject: [Bug ipa/65270] issues with merging memory accesses from different code paths
- Auto-submitted: auto-generated
- References: <bug-65270-4 at http dot gcc dot gnu dot org/bugzilla/>
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65270
--- Comment #29 from rguenther at suse dot de <rguenther at suse dot de> ---
On Thu, 5 Mar 2015, hubicka at gcc dot gnu.org wrote:
> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65270
>
> --- Comment #26 from Jan Hubicka <hubicka at gcc dot gnu.org> ---
> I completely missed the discussion concerning restrict. I opened PR65330 with
> that testcase. We can check in the following way:
> Index: ipa-icf.c
> ===================================================================
> --- ipa-icf.c (revision 221223)
> +++ ipa-icf.c (working copy)
> @@ -359,6 +359,13 @@ sem_item::compare_cgraph_references (
> return return_false_with_msg
> ("references to virtual tables can not be merged");
>
> + if (is_a <varpool_node *> (n1)
> + && POINTER_TYPE_P (TREE_TYPE (n1->decl))
> + && TYPE_RESTRICT (TREE_TYPE (n1->decl))
> + != TYPE_RESTRICT (TREE_TYPE (n2->decl)))
> + return return_false_with_msg
> + ("references have different restirct flags");
> +
> if (address && n1->equal_address_to (n2) == 1)
> return true;
> if (!address && n1->semantically_equivalent_p (n2))
>
> but I suppose with strong enough restrict handling, we want to actually walk
> the type and match restrict flag in all contained pointers? Shall we track it
> in PR65330, too? It is a non-bug until the missed optimization is fixed.
Yes, let's track it there, too.