This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug target/38695] [4.4 regression] gcc.c-torture/compile/pr37433.c ICE on trunk arm_function_in_section_p
- From: "laurent at guerby dot net" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 5 Jan 2009 15:38:13 -0000
- Subject: [Bug target/38695] [4.4 regression] gcc.c-torture/compile/pr37433.c ICE on trunk arm_function_in_section_p
- References: <bug-38695-7210@http.gcc.gnu.org/bugzilla/>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- Comment #3 from laurent at guerby dot net 2009-01-05 15:38 -------
<jakub> guerby: I guess the interesting thing is how could non-NULL be passed
there, step through expand_call and see if get_callee_fndecl returned non-NULL
or where fndecl became non-NULL
<guerby> fndecl seems to be NULL
<guerby> Breakpoint 4, emit_call_1 (funexp=0x2aaaab02a840,
fntree=0x2aaaaaf4aa50, fndecl=0x0, funtype=0x2aaaaaf6dd80, stack_size=0,
rounded_stack_size=0, struct_value_size=140737488347167, next_arg_reg=0x0,
<guerby> valreg=0x5e94c7, old_inhibit_defer_pop=-1426709664,
call_fusage=0x17, ecf_flags=-1426820016, args_so_far=0x0) at
/home/mstein/svn/trunk/gcc/calls.c:249
<guerby> jakub most targets file use "TREE_CODE (exp) == VAR_DECL &&
DECL_SECTION_NAME (exp)"
<guerby> instead of directly DECL_SECTION_NAME (exp) as
arm.c:arm_function_in_section_p does
/* Return true if DECL is known to be linked into section SECTION. */
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))
return false;
/* If DECL_SECTION_NAME is set, assume it is trustworthy. */
if (!DECL_SECTION_NAME (decl))
{
/* Make sure that we will not create a unique section for DECL. */
if (flag_function_sections || DECL_ONE_ONLY (decl))
return false;
}
return function_section (decl) == section;
}
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38695