On Thu, Jul 13, 2017 at 03:51:31PM +0200, Martin Liška wrote:
> It's request for comment where I mechanically moved attribute-related 
> function to attribs.[hc].
> 
> Patch can bootstrap on ppc64le-redhat-linux and survives regression tests.
> 
> Thoughts?

I've only noticed this now, what is the reason for undoing the size
optimization we had, i.e. inline lookup_attribute that handles the most
common case inline only and inline computes the strlen (an important
optimization, because we almost always call it with a string literal
and strlen of that is a constant) and doing the rest out of line?

> -/* Given an attribute name ATTR_NAME and a list of attributes LIST,
> -   return a pointer to the attribute's list element if the attribute
> -   is part of the list, or NULL_TREE if not found.  If the attribute
> -   appears more than once, this only returns the first occurrence; the
> -   TREE_CHAIN of the return value should be passed back in if further
> -   occurrences are wanted.  ATTR_NAME must be in the form 'text' (not
> -   '__text__').  */
> -
> -static inline tree
> -lookup_attribute (const char *attr_name, tree list)
> -{
> -  gcc_checking_assert (attr_name[0] != '_');  
> -  /* In most cases, list is NULL_TREE.  */
> -  if (list == NULL_TREE)
> -    return NULL_TREE;
> -  else
> -    /* Do the strlen() before calling the out-of-line implementation.
> -       In most cases attr_name is a string constant, and the compiler
> -       will optimize the strlen() away.  */
> -    return private_lookup_attribute (attr_name, strlen (attr_name), list);
> -}

The current code instead inlines the whole lookup_attribute which is larger.
Have you looked at the code size effects of that change?

        Jakub

Reply via email to