diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 4e9c2834539763960934769d1bad20571566b656..2869df4370be13ec0d34e9c4704c9b4cbd452d4c 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2004-12-26 John David Anglin <dave.anglin@nrc-cnrc.gc.ca> + + PR target/17643 + * pa.c (pa_function_ok_for_sibcall): Sibcalls are not ok when + generating code for the portable runtime. + 2004-12-25 Richard Henderson <rth@redhat.com> * expr.c (clear_storage): Validate CONST0_RTX extant. Special case diff --git a/gcc/config/pa/pa.c b/gcc/config/pa/pa.c index 707bb5da4b784d87de788b4fe04a26070ee877f8..07de1cc8ab728203851fe9d0c942a552884f6fb6 100644 --- a/gcc/config/pa/pa.c +++ b/gcc/config/pa/pa.c @@ -8091,6 +8091,9 @@ pa_asm_output_mi_thunk (FILE *file, tree thunk_fndecl, HOST_WIDE_INT delta, static bool pa_function_ok_for_sibcall (tree decl, tree exp ATTRIBUTE_UNUSED) { + if (TARGET_PORTABLE_RUNTIME) + return false; + /* Sibcalls are ok for TARGET_ELF32 as along as the linker is used in single subspace mode and the call is not indirect. As far as I know, there is no operating system support for the multiple subspace mode. @@ -8108,9 +8111,8 @@ pa_function_ok_for_sibcall (tree decl, tree exp ATTRIBUTE_UNUSED) if (TARGET_64BIT) return false; - return (decl - && !TARGET_PORTABLE_RUNTIME - && !TREE_PUBLIC (decl)); + /* Sibcalls are only ok within a translation unit. */ + return (decl && !TREE_PUBLIC (decl)); } /* Returns 1 if the 6 operands specified in OPERANDS are suitable for