On 5/8/19 7:20 PM, Bin.Cheng wrote: > On Thu, May 9, 2019 at 5:31 AM Jeff Law <l...@redhat.com> wrote: >> >> On 5/8/19 6:28 AM, Richard Biener wrote: >>> On Wed, May 8, 2019 at 12:09 PM JunMa <ju...@linux.alibaba.com> wrote: >>>> >>>> Hi >>>> >>>> As PR90106 (https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90106), >>>> when gcc meets builtin function call like: >>>> >>>> y = sqrt (x); >>>> >>>> The cdce pass tries to transform the call into an internal function >>>> call and conditionally executes call with a simple range check on the >>>> arguments which can detect most cases and the errno does not need >>>> to be set. It looks like: >>>> >>>> y = IFN_SQRT (x); >>>> if (__builtin_isless (x, 0)) >>>> sqrt (x); >>>> >>>> However, If the call is in tail position, for example: >>>> >>>> y = sqrt (x); >>>> return y; >>>> >>>> will become: >>>> >>>> y = IFN_SQRT (x); >>>> if (__builtin_isless (x, 0)) >>>> sqrt (x); >>>> return y; >>>> >>>> This transformation breaks tailcall pattern, and prevents >>>> later tailcall optimizations. >>>> >>>> So This patch transform builtin call with return value into >>>> if-then-else part, which looks like: >>>> >>>> y = sqrt (x); >>>> ==> >>>> if (__builtin_isless (x, 0)) >>>> y = sqrt (x); >>>> else >>>> y = IFN_SQRT (x); >>>> >>>> BTW, y = sqrt (x) can also transform like: >>>> >>>> y = IFN_SQRT (x); >>>> if (__builtin_isless (x, 0)) >>>> y = sqrt (x); >>>> >>>> We don‘t choose this pattern because it emits worse assemble >>>> code(more move instruction and use more registers) in x86_64. >>>> >>>> Bootstrapped/regtested on x86_64-linux, ok for trunk? >>> >>> OK. >> JunMa -- do you have a copyright assignment on file and write access to >> the repository? If not we should take care of that before proceeding >> further. > Hi Jeff, > Thanks very much for helping. > Yes, he is under Alibaba's copyright assignment. What else should we > do other than noticing in this mailing list message? > BTW, I think JunMa needs to apply write-access though. If he's covered under a corporate assignment, then we're fine from that standpoint.
For write access, we just need to go through the usual procedure. JunMa just needs to fill out this form, I'm happy to sponsor him. https://sourceware.org/cgi-bin/pdw/ps_form.cgi Jeff