From: Jan Hubicka Date: Tue, 14 Dec 2010 13:07:05 +0000 (+0100) Subject: re PR middle-end/46667 (-freorder-blocks-and-partition -g failed and libstdc++ builds... X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=ae9fd6b7cd6ab8d777612aa1b721a8c3112e2c5e;p=gcc.git re PR middle-end/46667 (-freorder-blocks-and-partition -g failed and libstdc++ builds for arm-eabi are broken.) PR middle-end/46667 * varasm.c (assemble_start_function): Do not call resolve_unique_section. * cfgexpand.c (gimple_expand_cfg): Resolve it here. From-SVN: r167795 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 78ca0480a21..c99b9314785 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2010-12-14 Jan Hubicka + + PR middle-end/46667 + * varasm.c (assemble_start_function): Do not call resolve_unique_section. + * cfgexpand.c (gimple_expand_cfg): Resolve it here. + 2010-12-14 Alexander Monakov PR rtl-optimization/46875 diff --git a/gcc/cfgexpand.c b/gcc/cfgexpand.c index 0ab06ead9f2..6cc5d01912f 100644 --- a/gcc/cfgexpand.c +++ b/gcc/cfgexpand.c @@ -3951,6 +3951,10 @@ gimple_expand_cfg (void) crtl->preferred_stack_boundary = STACK_BOUNDARY; cfun->cfg->max_jumptable_ents = 0; + /* Resovle the function section. Some targets, like ARM EABI rely on knowledge + of the function section at exapnsion time to predict distance of calls. */ + resolve_unique_section (current_function_decl, 0, flag_function_sections); + /* Expand the variables recorded during gimple lowering. */ timevar_push (TV_VAR_EXPAND); start_sequence (); diff --git a/gcc/varasm.c b/gcc/varasm.c index 891d4e06e57..ed44610ddf1 100644 --- a/gcc/varasm.c +++ b/gcc/varasm.c @@ -1551,8 +1551,6 @@ assemble_start_function (tree decl, const char *fnname) if (CONSTANT_POOL_BEFORE_FUNCTION) output_constant_pool (fnname, decl); - resolve_unique_section (decl, 0, flag_function_sections); - /* Make sure the not and cold text (code) sections are properly aligned. This is necessary here in the case where the function has both hot and cold sections, because we don't want to re-set