Thanks for pointing out this!

It seems to me that this user_defined_section_attribute variable is
useless now and should be removed. It is intended to work in this way:

for each function {
   parse into tree (setting user_defined_section_attribute)
   do tree passes
   do RTL passes (using user_defined_section_attribute)
   resetting (user_defined_section_attribute = false)
}

But now GCC works this way:

for each function {
   parse into tree (setting user_defined_section_attribute)
}
do IPA passes
for each function {
   do tree passes
   do RTL passes (using user_defined_section_attribute)
   resetting (user_defined_section_attribute = false)
}

Therefore the first function will use the actual
user_defined_section_attribute of the last function, and all other
functions will always see user_defined_section_attribute=0.

I suggest removing user_defined_section_attribute and simply check
!DECL_SECTION_NAME (current_function_decl).

On Mon, Aug 11, 2014 at 8:00 AM, Teresa Johnson <tejohn...@google.com> wrote:
> On Fri, Aug 8, 2014 at 3:22 PM, Yi Yang <ahyan...@google.com> wrote:
>> Friendly ping.
>
> Sorry, was OOO.
>
> The solution of preventing splitting for named sections is good - but
> it looks like there is already code that should prevent this. See the
> user_defined_section_attribute check here - why is that not set? Looks
> like it should be set in handle_section_attribute() in
> c-family/c-common.c.
>
> Teresa
>
>>
>>
>> On Wed, Aug 6, 2014 at 5:20 PM, Dehao Chen <de...@google.com> wrote:
>>>
>>> OK for google-4_8 and google-4_9. David and Teresa may have further
>>> comments.
>>>
>>> Dehao
>>>
>>> On Wed, Aug 6, 2014 at 3:36 PM, Yi Yang <ahyan...@google.com> wrote:
>>> > This currently puts split sections together again in the specified
>>> > section and breaks DWARF output. This patch disables the partitioning
>>> > for such functions.
>>> >
>>> > --
>>> >
>>> > 2014-08-06  Yi Yang  <ahyan...@google.com>
>>> >
>>> > gcc:
>>> >     * bb-reorder.c (gate_handle_partition_blocks): Add a check for
>>> > "section"
>>> > attribute.
>>> >
>>> > diff --git gcc/bb-reorder.c gcc/bb-reorder.c
>>> > index fa6f62f..09449c6 100644
>>> > --- gcc/bb-reorder.c
>>> > +++ gcc/bb-reorder.c
>>> > @@ -2555,6 +2555,7 @@ gate_handle_partition_blocks (void)
>>> >       we are going to omit the reordering.  */
>>> >    && optimize_function_for_speed_p (cfun)
>>> >    && !DECL_ONE_ONLY (current_function_decl)
>>> > +  && !DECL_SECTION_NAME (current_function_decl)
>>> >    && !user_defined_section_attribute);
>>> >  }
>>
>>
>
>
>
> --
> Teresa Johnson | Software Engineer | tejohn...@google.com | 408-460-2413

Reply via email to