On 4/5/22 10:33 PM, Peter Bergner via Gcc-patches wrote: > On 4/5/22 5:32 PM, Segher Boessenkool wrote: >> On Tue, Apr 05, 2022 at 05:06:50PM -0500, Peter Bergner wrote: >>> >>> + /* Handle longcall attributes. */ >>> + if ((INTVAL (cookie) & CALL_LONG) != 0 >>> + && GET_CODE (func_desc) == SYMBOL_REF) >> >> Don't say "!= 0" here please. >> >> if (INTVAL (cookie) & CALL_LONG && SYMBOL_REF_P (func_desc)) > > Yes, cut & paste. I'll change it. [snip] >> Don't say "Only", it is the "New" syndrome: it is out of date before you >> know it :-( You can just leave it away here. > > Ok, I can drop "Only" and keep the rest the same.
So the updated change looks like below with the ChangeLog entry and tests being the same: Is this better and ok for trunk? Peter @@ -25659,11 +25659,20 @@ rs6000_sibcall_aix (rtx value, rtx func_desc, rtx tlsarg, rtx cookie) rtx r12 = NULL_RTX; rtx func_addr = func_desc; - gcc_assert (INTVAL (cookie) == 0); - if (global_tlsarg) tlsarg = global_tlsarg; + /* Handle longcall attributes. */ + if (INTVAL (cookie) & CALL_LONG && SYMBOL_REF_P (func_desc)) + { + /* PCREL can do a sibling call to a longcall function + because we don't need to restore the TOC register. */ + gcc_assert (rs6000_pcrel_p ()); + func_desc = rs6000_longcall_ref (func_desc, tlsarg); + } + else + gcc_assert (INTVAL (cookie) == 0); + /* For ELFv2, r12 and CTR need to hold the function address for an indirect call. */ if (GET_CODE (func_desc) != SYMBOL_REF && DEFAULT_ABI == ABI_ELFv2)