[PATCH][C] Fix GNU extern inline heuristic again (fix C++ memory usage regression)

Ian Lance Taylor iant@google.com
Mon Aug 27 19:51:00 GMT 2007


Jakub Jelinek <jakub@redhat.com> writes:

> On Mon, Aug 27, 2007 at 11:14:58AM -0700, Ian Lance Taylor wrote:
> > *************** handle_always_inline_attribute (tree *no
> > *** 4864,4871 ****
> >   {
> >     if (TREE_CODE (*node) == FUNCTION_DECL)
> >       {
> > !       /* Do nothing else, just set the attribute.  We'll get at
> > ! 	 it later with lookup_attribute.  */
> >       }
> >     else
> >       {
> > --- 4864,4872 ----
> >   {
> >     if (TREE_CODE (*node) == FUNCTION_DECL)
> >       {
> > !       /* Set the attribute and mark it for disregarding inline
> > ! 	 limits.  */
> > !       DECL_DISREGARD_INLINE_LIMITS (*node) = 1;
> >       }
> >     else
> >       {
> > 
> > 
> > Is there any reason to keep the attribute, if we are setting the flag?
> > That is, why not set *no_add_attrs = true?
> 
> Because always_inline is not just about disregarding inline limits,
> but also that the diagnostic is required if the function can't be
> for whatever reason inlined.
> As DECL_DISREGARD_INLINE_LIMITS is used also for gnu89 extern inline
> functions (and it should be for gnu_inline in C++ when Alex commits his
> patch), it can't be used as a flag for always_inline attribute.


Thanks.

Richard, the patch is OK.

Thanks.

Ian



More information about the Gcc-patches mailing list