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