This bug is caused by my last patch, which did not differentiate between explicit section names (via attributes) and implicit section names (via -ffunction-section).
This patch fixes that. -- diff --git gcc/bb-reorder.c gcc/bb-reorder.c index 8f8c420..2115b01 100644 --- gcc/bb-reorder.c +++ gcc/bb-reorder.c @@ -2505,7 +2505,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)); + && !DECL_HAS_EXPLICIT_SECTION_NAME_P(current_function_decl)); } /* This function is the main 'entrance' for the optimization that diff --git gcc/tree.h gcc/tree.h index 817507f..738675a 100644 --- gcc/tree.h +++ gcc/tree.h @@ -3201,6 +3201,11 @@ struct GTY(()) tree_parm_decl { #define DECL_HAS_IMPLICIT_SECTION_NAME_P(NODE) \ (DECL_WITH_VIS_CHECK (NODE)->decl_with_vis.implicit_section_name_p) +/* Speficy whether the section name was explicitly set with decl_attributes. */ +#define DECL_HAS_EXPLICIT_SECTION_NAME_P(NODE) \ + (DECL_HAS_IMPLICIT_SECTION_NAME_P(NODE)? false: \ + !!DECL_SECTION_NAME(NODE)) + struct GTY(()) tree_decl_with_vis { struct tree_decl_with_rtl common; tree assembler_name; --