On 02/19/2015 09:08 AM, Alex Velenko wrote: > Your suggestion seem to fix gcc.target/arm/long-calls-1.c, but has to be > thoroughly tested.
Before you do complete testing, please also delete the TREE_STATIC test. That bit should never be relevant to functions, as it indicates not that it is in the compilation unit, but that it has static (as opposed to automatic) storage duration. Thus it is only relevant to variables. r~ diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c index 7bf5b4d..777230e 100644 --- a/gcc/config/arm/arm.c +++ b/gcc/config/arm/arm.c @@ -6392,14 +6392,8 @@ arm_set_default_type_attributes (tree type) static bool arm_function_in_section_p (tree decl, section *section) { - /* We can only be certain about functions defined in the same - compilation unit. */ - if (!TREE_STATIC (decl)) - return false; - - /* Make sure that SYMBOL always binds to the definition in this - compilation unit. */ - if (!targetm.binds_local_p (decl)) + /* We can only be certain about the prevailing symbol definition. */ + if (!decl_binds_to_current_def_p (decl)) return false; /* If DECL_SECTION_NAME is set, assume it is trustworthy. */