* elf32-spu.c (mark_functions_via_relocs): Handle cycles in the

control flow graph between fragments of a function.
This commit is contained in:
Ulrich Weigand
2009-05-14 14:40:57 +00:00
parent c1ea05bbe8
commit cc210763ce
2 changed files with 13 additions and 1 deletions

View File

@ -1,3 +1,8 @@
2009-05-14 Ulrich Weigand <uweigand@de.ibm.com>
* elf32-spu.c (mark_functions_via_relocs): Handle cycles in the
control flow graph between fragments of a function.
2009-05-14 Ulrich Weigand <uweigand@de.ibm.com>
* elf32-spu.c (spu_elf_size_stubs): Even in software i-cache mode,

View File

@ -2787,7 +2787,14 @@ mark_functions_via_relocs (asection *sec,
callee->fun->is_func = TRUE;
}
else if (callee->fun->start == NULL)
callee->fun->start = caller;
{
struct function_info *caller_start = caller;
while (caller_start->start)
caller_start = caller_start->start;
if (caller_start != callee->fun)
callee->fun->start = caller_start;
}
else
{
struct function_info *callee_start;