aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJan Hubicka <jh@suse.cz>2010-12-14 14:07:05 +0100
committerJan Hubicka <hubicka@gcc.gnu.org>2010-12-14 13:07:05 +0000
commitae9fd6b7cd6ab8d777612aa1b721a8c3112e2c5e (patch)
tree9cc76fb425b71d0e50ff805535ba86260f5589ba /gcc
parentb4550bf7ad60d0233a4d9f36dcbbce32e75a3199 (diff)
downloadgcc-ae9fd6b7cd6ab8d777612aa1b721a8c3112e2c5e.zip
gcc-ae9fd6b7cd6ab8d777612aa1b721a8c3112e2c5e.tar.gz
gcc-ae9fd6b7cd6ab8d777612aa1b721a8c3112e2c5e.tar.bz2
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
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/cfgexpand.c4
-rw-r--r--gcc/varasm.c2
3 files changed, 10 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 78ca048..c99b931 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2010-12-14 Jan Hubicka <jh@suse.cz>
+
+ 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 <amonakov@ispras.ru>
PR rtl-optimization/46875
diff --git a/gcc/cfgexpand.c b/gcc/cfgexpand.c
index 0ab06ea..6cc5d01 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 891d4e0..ed44610 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