https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103223

            Bug ID: 103223
           Summary: [12 regression] Access attribute prevents IPA
                    optimization
           Product: gcc
           Version: 12.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: tree-optimization
          Assignee: unassigned at gcc dot gnu.org
          Reporter: hubicka at gcc dot gnu.org
  Target Milestone: ---

Hi,
ipa-fnsummary sets can_change_signature flag which determines whether we can
manipulate parameters of a given function.  It tests:

       /* Type attributes can use parameter indices to describe them.  */
       if (TYPE_ATTRIBUTES (TREE_TYPE (node->decl))
         node->can_change_signature = false
Which unfortunately triggers on many C functions now when we introduced the
access attribute.

Updating happens in ipa-param-manipulation and we do have infrastructure how to
rewrite (suriving) old attributes to new ones, so we could support access
attribute updating (or always map to old indexes when using it).

I don't think possible warnings should inhibit useful optimizations and this is
a regression wrt compilers before the access attribute.  I am having patch to
fix similar issue with fnspec attribute that can be safely removed at signature
change since we now can preserve info in ipa-modref.

Martin, I wonder if if you would be OK with simply dropping the access when
function signature changes (which I can prepare patch for) or do you want to
dive into updating it?

Once new fuction is created, for every new parameter there is
get_original_index accessor which returns original parameter index (if it
exists).  This could be easily used to update access and drop those entries
that was really optimized out IMO

Reply via email to