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