http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46916
--- Comment #18 from Iain Sandoe <iains at gcc dot gnu.org> 2010-12-14 12:17:00
UTC ---
(In reply to comment #17)
> > well.... the pre-existing implementation of :
> >
> > static section *
> > darwin_text_section (int reloc, int weak)
> > {
> > if (reloc)
> > return (weak
> > ? darwin_sections[text_unlikely_coal_section]
> > : unlikely_text_section ()); <<<<<<<<+++++++++
> > else
> > return (weak
> > ? darwin_sections[text_coal_section]
> > : text_section);
> > }
> >
> > ... is invoked when darwin_function_section () returns NULL.
> The code probably should also disable itself with -fno-reorder-functions...
well, this also fixes the issue ..
but, the original implementation of darwin_text_section () pre-dates my
involvement
-- I am not sure why it partitions, and ...
-- if we should preserve some partitioning even when the option is off ...
Mike?
Index: gcc/opts.c
===================================================================
--- gcc/opts.c (revision 167793)
+++ gcc/opts.c (working copy)
@@ -723,6 +723,9 @@ finish_options (struct gcc_options *opts, struct g
opts->x_flag_reorder_blocks = 1;
}
+ if (opts->x_flag_reorder_blocks_and_partition)
+ opts->x_flag_reorder_blocks = 1;
+
/* If user requested unwind info, then turn off the partitioning
optimization. */
Index: gcc/config/darwin.c
===================================================================
--- gcc/config/darwin.c (revision 167793)
+++ gcc/config/darwin.c (working copy)
@@ -1147,7 +1147,7 @@ darwin_mark_decl_preserved (const char *name)
static section *
darwin_text_section (int reloc, int weak)
{
- if (reloc)
+ if (flag_reorder_functions && reloc)
return (weak
? darwin_sections[text_unlikely_coal_section]
: unlikely_text_section ());