Re: [PING PATCH coroutines] Do not strip cleanup_point when promote temporaries out of current stmt

2020-03-05 Thread JunMa
在 2020/3/5 下午10:18, Iain Sandoe 写道: Hello JunMa, JunMa wrote: Ping Once again, sorry for taking time to review this. 在 2020/2/27 上午10:18, JunMa 写道: 在 2020/2/11 上午10:14, JunMa 写道: Kindly ping Regards JunMa Hi In maybe_promote_captured_temps, the cleanup_point_stmt has been stripped

Re: [PING PATCH coroutines] Set side effects flag for BIND_EXPR which build in maybe_promote_captured_temps

2020-03-05 Thread JunMa
在 2020/3/5 下午9:51, Iain Sandoe 写道: Hello JunMa, JunMa wrote: Ping Thanks for your patch(es) and I am sorry this has taken some time to review. (right now, we’re trying to ensure that we have the latest standard represented in  GCC10, so updating to n4849). 在 2020/2/27 上午10:17, JunMa

Re: [PING PATCH coroutines] Do not strip cleanup_point when promote temporaries out of current stmt

2020-03-05 Thread JunMa
Ping Regards JunMa 在 2020/2/27 上午10:18, JunMa 写道: 在 2020/2/11 上午10:14, JunMa 写道: Kindly ping Regards JunMa Hi In maybe_promote_captured_temps, the cleanup_point_stmt has been stripped when handle temporaries captured by reference. However, maybe there are non-reference temporaries in current

Re: [PING PATCH coroutines] Set side effects flag for BIND_EXPR which build in maybe_promote_captured_temps

2020-03-05 Thread JunMa
Ping Regards JunMa 在 2020/2/27 上午10:17, JunMa 写道: 在 2020/2/11 上午10:50, JunMa 写道: Hi kindly ping~ Regards JunMa Hi As title. in maybe_promote_captured_temps, we promote captured temporaries and co_await_expr into a new BIND_EXPR. As the BIND_EXPR contains co_await_expr and maybe other

Re: [PATCH coroutines] Handle component_ref in captures_temporary

2020-03-03 Thread JunMa
在 2020/3/3 下午8:15, Nathan Sidwell 写道: On 3/3/20 12:42 AM, JunMa wrote: 在 2020/3/2 下午10:49, Nathan Sidwell 写道: On 2/12/20 2:23 AM, JunMa wrote: Hi nathan Here is the updated patch This is ok, with a correction in a comment: +  /* This isn't a temporary or argument.  */    /*

Re: [PATCH coroutines] Handle component_ref in captures_temporary

2020-03-02 Thread JunMa
在 2020/3/2 下午10:49, Nathan Sidwell 写道: On 2/12/20 2:23 AM, JunMa wrote: Hi In captures_temporary, the current implementation fails to handle component_ref. This causes ice with case co_await A while operator co_await is defined in base class of A. Also it is necessary to capture the object of

Re: [PATCH] coroutines: Update lambda capture handling to n4849.

2020-03-02 Thread JunMa
ood thing to revisit for C++23. This patch removes the additional copying behaviour for lambda capture-by- copy vars. @JunMa, this supercedes your fix to the aliases, which should no longer be necessary, but i’ve added your testcases to this patch. Hi Iain Most part of your patch are same idea

Re: [PING PATCH coroutines] Handle component_ref in captures_temporary

2020-02-26 Thread JunMa
在 2020/2/12 下午3:23, JunMa 写道: Kindly ping Regards JunMa Hi In captures_temporary, the current implementation fails to handle component_ref. This causes ice with case co_await A while operator co_await is defined in base class of A. Also it is necessary to capture the object of base class as if

Re: [PING PATCH coroutines] Do not strip cleanup_point when promote temporaries out of current stmt

2020-02-26 Thread JunMa
在 2020/2/11 上午10:14, JunMa 写道: Kindly ping Regards JunMa Hi In maybe_promote_captured_temps, the cleanup_point_stmt has been stripped when handle temporaries captured by reference. However, maybe there are non-reference temporaries in current stmt which cause ice in gimpilify pass. This patch

Re: [PING PATCH coroutines] Set side effects flag for BIND_EXPR which build in maybe_promote_captured_temps

2020-02-26 Thread JunMa
在 2020/2/11 上午10:50, JunMa 写道: Hi kindly ping~ Regards JunMa Hi As title. in maybe_promote_captured_temps, we promote captured temporaries and co_await_expr into a new BIND_EXPR. As the BIND_EXPR contains co_await_expr and maybe other function calls, the side effects flag should be set

Re: [PING PATCH coroutines v1] Build co_await/yield_expr with unknown_type in processing_template_decl phase

2020-02-26 Thread JunMa
在 2020/2/10 下午7:42, JunMa 写道: Ping~ Regards JunMa Kindly ping. Regards JunMa 在 2020/2/5 下午5:17, JunMa 写道: 在 2020/2/5 下午2:14, JunMa 写道: Hi This patch builds co_await/yield_expr with unknown_type when we can not know the promise type in processing_template_decl phase. it avoid to confuse

Re: [PATCH] coroutines: Amend parameter handling to match n4849.

2020-02-26 Thread JunMa
在 2020/2/26 下午9:43, Iain Sandoe 写道: This is the second in the series to bring the GCC implementation into line with the current standard. @JunMa I believe that this should solve the problems you were looking at in “[PATCH Coroutines] Fix issue with unused corutine function parameters

[PATCH coroutines] Handle component_ref in captures_temporary

2020-02-11 Thread JunMa
to its base object and check it as usual. Bootstrap and test on X86_64, is it OK? Regards JunMa gcc/cp 2020-02-12  Jun Ma     * coroutines.cc (captures_temporary): Strip component_ref     to its base object. gcc/testsuite 2020-02-12  Jun Ma     * g++.dg/coroutines/torture/co-await

Re: [PATCH coroutines] Set side effects flag for BIND_EXPR which build in maybe_promote_captured_temps

2020-02-11 Thread JunMa
在 2020/2/11 上午10:50, JunMa 写道: Hi As title. in maybe_promote_captured_temps, we promote captured temporaries and co_await_expr into a new BIND_EXPR. As the BIND_EXPR contains co_await_expr and maybe other function calls, the side effects flag should be set. This patch fix one mismatch in

[PATCH coroutines] Set side effects flag for BIND_EXPR which build in maybe_promote_captured_temps

2020-02-10 Thread JunMa
cppcoro and is reduced by creduce. Bootstrap and test on X86_64, is it OK? Regards JunMa gcc/cp 2020-02-11  Jun Ma     * coroutines.cc (maybe_promote_captured_temps): Set side effects     flag for BIND_EXPR. gcc/testsuite 2020-02-11  Jun Ma     * g++.dg/coroutines/torture/lambda-10-co

[PATCH coroutines] Do not strip cleanup_point when promote temporaries out of current stmt

2020-02-10 Thread JunMa
creduce. Bootstrap and test on X86_64, is it OK? Regards JunMa gcc/cp 2020-02-11  Jun Ma     * coroutines.cc (maybe_promote_captured_temps): Do not strip     cleanup_point_stmt. gcc/testsuite 2020-02-11  Jun Ma     * g++.dg/coroutines/torture/lambda-09-capture-object.C: New test

Re: [PATCH coroutines v1] Build co_await/yield_expr with unknown_type in processing_template_decl phase

2020-02-10 Thread JunMa
Kindly ping. Regards JunMa 在 2020/2/5 下午5:17, JunMa 写道: 在 2020/2/5 下午2:14, JunMa 写道: Hi This patch builds co_await/yield_expr with unknown_type when we can not know the promise type in processing_template_decl phase. it avoid to confuse compiler when handing type deduction and conversion

Re: [PATCH coroutines] Change lowering behavior of alias variable from copy to substitute

2020-02-10 Thread JunMa
在 2020/2/6 下午7:09, JunMa 写道: 在 2020/2/6 下午5:12, Iain Sandoe 写道: Hi JunMa, JunMa wrote: 在 2020/2/4 下午8:17, JunMa 写道: Hi When testing coroutines with lambda function, I find we copy each captured variable to frame. However, according to gimplify pass, for each declaration that is an alias

Re: [PATCH coroutines] Change lowering behavior of alias variable from copy to substitute

2020-02-06 Thread JunMa
在 2020/2/6 下午5:12, Iain Sandoe 写道: Hi JunMa, JunMa wrote: 在 2020/2/4 下午8:17, JunMa 写道: Hi When testing coroutines with lambda function, I find we copy each captured variable to frame. However, according to gimplify pass, for each declaration that is an alias for another expression

Re: [PATCH coroutines] Change lowering behavior of alias variable from copy to substitute

2020-02-05 Thread JunMa
在 2020/2/4 下午8:17, JunMa 写道: Hi When testing coroutines with lambda function, I find we copy each captured variable to frame. However, according to gimplify pass, for each declaration that is an alias for another expression(DECL_VALUE_EXPR), we can substitute them directly. Since lambda

Re: [PATCH coroutines v1] Build co_await/yield_expr with unknown_type in processing_template_decl phase

2020-02-05 Thread JunMa
在 2020/2/5 下午2:14, JunMa 写道: Hi This patch builds co_await/yield_expr with unknown_type when we can not know the promise type in processing_template_decl phase. it avoid to confuse compiler when handing type deduction and conversion. Bootstrap and test on X86_64, is it OK? Regards JunMa Hi

[PATCH coroutines] Build co_await/yield_expr with unknown_type in processing_template_decl phase

2020-02-04 Thread JunMa
Hi This patch builds co_await/yield_expr with unknown_type when we can not know the promise type in processing_template_decl phase. it avoid to confuse compiler when handing type deduction and conversion. Bootstrap and test on X86_64, is it OK? Regards JunMa gcc/cp 2020-02-05  Jun Ma

[PATCH coroutines] Change lowering behavior of alias variable from copy to substitute

2020-02-04 Thread JunMa
frame field, then we check every variable whether it has DECL_VALUE_EXPR, and then substitute it, this patch does not create frame field for such variables. Bootstrap and test on X86_64, is it OK? Regards JunMa gcc/cp 2020-02-04  Jun Ma     * coroutines.cc (morph_fn_to_coro): Remove code

Re: [PATCH Coroutines v2] Handle type deduction of auto and decltype(auto) with indirect_ref expression

2020-02-03 Thread JunMa
在 2020/2/3 下午8:53, Nathan Sidwell 写道: On 2/2/20 9:28 PM, JunMa wrote: 在 2020/2/3 上午9:03, JunMa 写道: I think all you want here is:   await_expr = convert_from_reference (await_expr); Thanks, I'll update it. Regards JunMa Hi nathan, Here is the update.    /* This will produc

Re: [PATCH Coroutines v1] Handle type deduction of auto and decltype(auto) with indirect_ref expression

2020-02-02 Thread JunMa
在 2020/2/3 上午9:03, JunMa 写道: 在 2020/1/28 上午12:01, Nathan Sidwell 写道: On 1/21/20 6:21 AM, JunMa wrote: Hi When test gcc with cppcoro, I find case like:    int& awaitable::await_resume()    auto x1 = co_await awaitable;    decltype(auto) x2 = co_await awaitable; Based on standard, typeo

Re: [PATCH Coroutines] Handle type deduction of auto and decltype(auto) with indirect_ref expression

2020-02-02 Thread JunMa
在 2020/1/28 上午12:01, Nathan Sidwell 写道: On 1/21/20 6:21 AM, JunMa wrote: Hi When test gcc with cppcoro, I find case like:    int& awaitable::await_resume()    auto x1 = co_await awaitable;    decltype(auto) x2 = co_await awaitable; Based on standard, typeof(x1) should be int, typeof(x2

Re: [PATCH Coroutines 1/2] Add error messages for missing methods of awaitable class

2020-01-21 Thread JunMa
在 2020/1/21 下午8:06, Nathan Sidwell 写道: On 1/20/20 10:38 PM, JunMa wrote: 在 2020/1/21 上午9:31, JunMa 写道: 在 2020/1/20 下午11:49, Nathan Sidwell 写道: On 1/20/20 12:18 AM, JunMa wrote: Hi This patch adds lookup_awaitable_member, it outputs error messages when any of the await_ready/suspend/resume

[PATCH Coroutines] Handle type deduction of auto and decltype(auto) with indirect_ref expression

2020-01-21 Thread JunMa
all_expr when replace co_await expression. it fix type deduction of auto and decltype(auto) in coroutine. Bootstrap and test on X86_64, is it OK? Regards JunMa gcc/cp 2020-01-21  Jun Ma     * coroutines.cc (build_co_await): Wrap co_await with     indirect_ref whe

Re: [PATCH Coroutines] Fix issue with unused corutine function parameters

2020-01-21 Thread JunMa
在 2020/1/21 下午4:07, Iain Sandoe 写道: JunMa wrote: 在 2020/1/21 上午9:34, JunMa 写道: 在 2020/1/21 上午12:39, Iain Sandoe 写道: JunMa wrote: 在 2020/1/20 下午8:21, Iain Sandoe 写道: JunMa wrote: 在 2020/1/20 下午7:55, Iain Sandoe 写道: Hi JunMa, JunMa wrote: 在 2020/1/20 下午6:07, Iain Sandoe 写道: Hi

[PATCH Coroutines] Change context of label_decl in original function

2020-01-20 Thread JunMa
Hi This patch does minor fix on changing context of label_decl from original function to actor function which avoid assertion in gimplify pass. Bootstrap and test on X86_64, is it OK? Regards JunMa gcc/cp 2020-01-21  Jun Ma     * coroutines.cc (transform_await_wrapper): Set actor funcion

Re: [PATCH Coroutines 2/2] Add error check on return value of build_co_await

2020-01-20 Thread JunMa
在 2020/1/21 上午9:31, JunMa 写道: 在 2020/1/20 下午11:49, Nathan Sidwell 写道: On 1/20/20 12:18 AM, JunMa wrote: Hi This patch adds lookup_awaitable_member, it outputs error messages when any of the await_ready/suspend/resume functions are missing in awaitable class. This patch also add some error

Re: [PATCH Coroutines 1/2] Add error messages for missing methods of awaitable class

2020-01-20 Thread JunMa
在 2020/1/21 上午9:31, JunMa 写道: 在 2020/1/20 下午11:49, Nathan Sidwell 写道: On 1/20/20 12:18 AM, JunMa wrote: Hi This patch adds lookup_awaitable_member, it outputs error messages when any of the await_ready/suspend/resume functions are missing in awaitable class. This patch also add some error

Re: [PATCH Coroutines] Fix issue with unused corutine function parameters

2020-01-20 Thread JunMa
在 2020/1/21 上午9:34, JunMa 写道: 在 2020/1/21 上午12:39, Iain Sandoe 写道: JunMa wrote: 在 2020/1/20 下午8:21, Iain Sandoe 写道: JunMa wrote: 在 2020/1/20 下午7:55, Iain Sandoe 写道: Hi JunMa, JunMa wrote: 在 2020/1/20 下午6:07, Iain Sandoe 写道: Hi JunMa, JunMa wrote: Hi Accroding to N4835: When a

Re: [PATCH Coroutines] Fix issue with unused corutine function parameters

2020-01-20 Thread JunMa
在 2020/1/21 上午12:39, Iain Sandoe 写道: JunMa wrote: 在 2020/1/20 下午8:21, Iain Sandoe 写道: JunMa wrote: 在 2020/1/20 下午7:55, Iain Sandoe 写道: Hi JunMa, JunMa wrote: 在 2020/1/20 下午6:07, Iain Sandoe 写道: Hi JunMa, JunMa wrote: Hi Accroding to N4835: When a coroutine is invoked, a copy is

Re: [PATCH Coroutines] Add error messages for missing methods of awaitable class

2020-01-20 Thread JunMa
在 2020/1/20 下午11:49, Nathan Sidwell 写道: On 1/20/20 12:18 AM, JunMa wrote: Hi This patch adds lookup_awaitable_member, it outputs error messages when any of the await_ready/suspend/resume functions are missing in awaitable class. This patch also add some error check on return value of

Re: [PATCH Coroutines] Fix issue with unused corutine function parameters

2020-01-20 Thread JunMa
在 2020/1/20 下午8:21, Iain Sandoe 写道: JunMa wrote: 在 2020/1/20 下午7:55, Iain Sandoe 写道: Hi JunMa, JunMa wrote: 在 2020/1/20 下午6:07, Iain Sandoe 写道: Hi JunMa, JunMa wrote: Hi Accroding to N4835: When a coroutine is invoked, a copy is created for each coroutine parameter. While in current

Re: [PATCH Coroutines] Fix issue with unused corutine function parameters

2020-01-20 Thread JunMa
在 2020/1/20 下午7:55, Iain Sandoe 写道: Hi JunMa, JunMa wrote: 在 2020/1/20 下午6:07, Iain Sandoe 写道: Hi JunMa, JunMa wrote: Hi Accroding to N4835: When a coroutine is invoked, a copy is created for each coroutine parameter. While in current implementation, we only collect used parameters

Re: [PATCH Coroutines] Fix issue with unused corutine function parameters

2020-01-20 Thread JunMa
在 2020/1/20 下午6:07, Iain Sandoe 写道: Hi JunMa, JunMa wrote: Hi Accroding to N4835: When a coroutine is invoked, a copy is created for each coroutine parameter. While in current implementation, we only collect used parameters. This may lost behavior inside constructor and destructor of unused

Re: [PATCH Coroutines] Add error messages for missing methods of awaitable class

2020-01-20 Thread JunMa
在 2020/1/20 下午4:55, Iain Sandoe 写道: Hi JunMa, JunMa wrote: gcc/cp 2020-01-20  Jun Ma     * coroutines.cc (lookup_awaitable_member): Lookup an awaitable member.     (build_co_await): Use lookup_awaitable_member instead of lookup_member.     (finish_co_yield_expr

[PATCH Coroutines] Fix issue with unused corutine function parameters

2020-01-20 Thread JunMa
parameter. Bootstrap and test on X86_64, is it OK? Regards JunMa gcc/cp 2020-01-20  Jun Ma     * coroutines.cc (build_actor_fn): Skip rewrite when there is no     param references.     (register_param_uses): Only collect param references here.     (morph_fn_to_coro): Create

[PATCH Coroutines] Add error messages for missing methods of awaitable class

2020-01-19 Thread JunMa
X86_64, is it OK? Regards JunMa gcc/cp 2020-01-20  Jun Ma     * coroutines.cc (lookup_awaitable_member): Lookup an awaitable member.     (build_co_await): Use lookup_awaitable_member instead of lookup_member.     (finish_co_yield_expr, finish_co_await_expr): Add error check on

Re: [C++ coroutines 6/6] Testsuite.

2020-01-07 Thread JunMa
在 2019/11/20 下午9:11, JunMa 写道: 在 2019/11/20 下午7:22, Iain Sandoe 写道: Hello JunMa, JunMa wrote: 在 2019/11/17 下午6:28, Iain Sandoe 写道: I find that the patches donot support 'for co_await'. And it is quiet simple to implement range based 'for co_await' based on your patches,

Re: [C++ coroutines 6/6] Testsuite.

2019-11-20 Thread JunMa
在 2019/11/20 下午7:22, Iain Sandoe 写道: Hello JunMa, JunMa wrote: 在 2019/11/17 下午6:28, Iain Sandoe 写道: I find that the patches donot support 'for co_await'. And it is quiet simple to implement range based 'for co_await' based on your patches, since it's just need fe

Re: [PATCH][Tree-optimization/PR89772]fold memchr builtins for character not in constant nul-padded string

2019-06-27 Thread JunMa
在 2019/6/18 上午6:46, Jeff Law 写道: On 5/9/19 2:01 AM, JunMa wrote: 在 2019/5/9 上午10:22, JunMa 写道: 在 2019/5/9 上午3:02, Bernd Edlinger 写道: On 5/8/19 4:31 PM, Richard Biener wrote: On Tue, May 7, 2019 at 4:34 AM JunMa  wrote: 在 2019/5/6 下午7:58, JunMa 写道: 在 2019/5/6 下午6:02, Richard Biener 写道: On

Re: [PATCH][PR89341]Fix ICE on function definition with weakref/alias attributes attached

2019-06-27 Thread JunMa
在 2019/6/19 上午4:38, Jeff Law 写道: On 3/26/19 5:40 AM, JunMa wrote: Hi According to gnu document of function attributes, neither weakref nor alias could be attached to a function defined in current translation unit. Although GCC checks the attributes under some circumstances, it still fails on

Re: [PATCH][PR90106] Builtin call transformation changes in cdce pass

2019-05-17 Thread JunMa
在 2019/5/17 下午2:34, Jakub Jelinek 写道: On Fri, May 17, 2019 at 02:24:22PM +0800, JunMa wrote: 2019-05-17  Jun Ma Two spaces before < rather than one.     PR tree-optimization/90106     * gcc.dg/cdce3.c: New test. --- /dev/null +++ b/gcc/testsuite/gcc.dg/cdce3.c @@ -0,0 +1,12 @@ +/* { dg

Re: [PATCH][PR90106] Builtin call transformation changes in cdce pass

2019-05-16 Thread JunMa
在 2019/5/17 上午11:09, JunMa 写道: 在 2019/5/17 上午6:04, Jakub Jelinek 写道: On Thu, May 16, 2019 at 11:39:38PM +0200, Jakub Jelinek wrote: One possibility is to add -fdump-tree-optimized and scan for /* { dg-final { scan-tree-dump "pow \\(\[^\n\r]*\\); \\\[tail call\\\]" "optimize

Re: [PATCH][PR90106] Builtin call transformation changes in cdce pass

2019-05-16 Thread JunMa
在 2019/5/17 上午6:04, Jakub Jelinek 写道: On Thu, May 16, 2019 at 11:39:38PM +0200, Jakub Jelinek wrote: One possibility is to add -fdump-tree-optimized and scan for /* { dg-final { scan-tree-dump "pow \\(\[^\n\r]*\\); \\\[tail call\\\]" "optimized" } } */ resp. /* { dg-final { scan-tree-dump "log

[PATCH] Add myself to MAINTAINERS

2019-05-16 Thread JunMa
Already committed, as per https://www.gnu.org/software/gcc/svnwrite.html. Regards Jun 2019-05-16 Jun Ma * MAINTAINERS (Write After Approval): Add myself. diff --git a/MAINTAINERS b/MAINTAINERS index fb7fd34..7c5942a 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -514,6 +514,7 @

Re: [PATCH][PR89341]Fix ICE on function definition with weakref/alias attributes attached

2019-05-13 Thread JunMa
在 2019/5/13 下午5:02, Jakub Jelinek 写道: On Mon, May 13, 2019 at 04:53:52PM +0800, JunMa wrote: According to gnu document of function attributes, neither weakref nor alias could be attached to a function defined in current translation unit. Although GCC checks the attributes under some

Re: [PATCH][PR89341]Fix ICE on function definition with weakref/alias attributes attached

2019-05-13 Thread JunMa
在 2019/3/26 下午7:40, JunMa 写道: Hi According to gnu document of function attributes, neither weakref nor alias could be attached to a function defined in current translation unit. Although GCC checks the attributes under some circumstances, it still fails on some cases and even causes ICE

Re: [PATCH][PR90106] Builtin call transformation changes in cdce pass

2019-05-09 Thread JunMa
在 2019/5/10 上午4:00, Jeff Law 写道: On 5/8/19 8:25 PM, JunMa wrote: 在 2019/5/9 上午9:20, Bin.Cheng 写道: On Thu, May 9, 2019 at 5:31 AM Jeff Law wrote: On 5/8/19 6:28 AM, Richard Biener wrote: On Wed, May 8, 2019 at 12:09 PM JunMa wrote: Hi As PR90106 (https://gcc.gnu.org/bugzilla/show_bug.cgi

Re: [PATCH][Tree-optimization/PR89772]fold memchr builtins for character not in constant nul-padded string

2019-05-09 Thread JunMa
在 2019/5/9 上午10:22, JunMa 写道: 在 2019/5/9 上午3:02, Bernd Edlinger 写道: On 5/8/19 4:31 PM, Richard Biener wrote: On Tue, May 7, 2019 at 4:34 AM JunMa wrote: 在 2019/5/6 下午7:58, JunMa 写道: 在 2019/5/6 下午6:02, Richard Biener 写道: On Thu, Mar 21, 2019 at 5:57 AM JunMa wrote: Hi For now, gcc can not

Re: [PATCH][PR90106] Builtin call transformation changes in cdce pass

2019-05-08 Thread JunMa
在 2019/5/9 上午9:20, Bin.Cheng 写道: On Thu, May 9, 2019 at 5:31 AM Jeff Law wrote: On 5/8/19 6:28 AM, Richard Biener wrote: On Wed, May 8, 2019 at 12:09 PM JunMa wrote: Hi As PR90106 (https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90106), when gcc meets builtin function call like: y = sqrt

Re: [PATCH][Tree-optimization/PR89772]fold memchr builtins for character not in constant nul-padded string

2019-05-08 Thread JunMa
在 2019/5/9 上午3:02, Bernd Edlinger 写道: On 5/8/19 4:31 PM, Richard Biener wrote: On Tue, May 7, 2019 at 4:34 AM JunMa wrote: 在 2019/5/6 下午7:58, JunMa 写道: 在 2019/5/6 下午6:02, Richard Biener 写道: On Thu, Mar 21, 2019 at 5:57 AM JunMa wrote: Hi For now, gcc can not fold code like: const char a

Re: [PATCH][Tree-optimization/PR89772]fold memchr builtins for character not in constant nul-padded string

2019-05-08 Thread JunMa
在 2019/5/8 下午10:31, Richard Biener 写道: On Tue, May 7, 2019 at 4:34 AM JunMa wrote: 在 2019/5/6 下午7:58, JunMa 写道: 在 2019/5/6 下午6:02, Richard Biener 写道: On Thu, Mar 21, 2019 at 5:57 AM JunMa wrote: Hi For now, gcc can not fold code like: const char a[5] = "123" __builtin_mem

[PATCH][PR90106] Builtin call transformation changes in cdce pass

2019-05-08 Thread JunMa
rds JunMa gcc/ChangeLog 2019-05-07  Jun Ma     PR tree-optimization/90106     * tree-call-cdce.c (shrink_wrap_one_built_in_call_with_conds): Add     new parameter as new internal function call, also move it to new     basic block.     (use_internal_fn): Pass internal function call

Re: [PATCH][Tree-optimization/PR89772]fold memchr builtins for character not in constant nul-padded string

2019-05-06 Thread JunMa
在 2019/5/7 上午2:05, Martin Sebor 写道: On 5/6/19 5:58 AM, JunMa wrote: 在 2019/5/6 下午6:02, Richard Biener 写道: On Thu, Mar 21, 2019 at 5:57 AM JunMa wrote: Hi For now, gcc can not fold code like: const char a[5] = "123" __builtin_memchr (a, '7', sizeof a) It tries to avoid f

Re: [PATCH][Tree-optimization/PR89772]fold memchr builtins for character not in constant nul-padded string

2019-05-06 Thread JunMa
在 2019/5/6 下午7:58, JunMa 写道: 在 2019/5/6 下午6:02, Richard Biener 写道: On Thu, Mar 21, 2019 at 5:57 AM JunMa wrote: Hi For now, gcc can not fold code like: const char a[5] = "123" __builtin_memchr (a, '7', sizeof a) It tries to avoid folding out of string length althou

Re: [PATCH][Tree-optimization/PR89772]fold memchr builtins for character not in constant nul-padded string

2019-05-06 Thread JunMa
在 2019/5/6 下午6:02, Richard Biener 写道: On Thu, Mar 21, 2019 at 5:57 AM JunMa wrote: Hi For now, gcc can not fold code like: const char a[5] = "123" __builtin_memchr (a, '7', sizeof a) It tries to avoid folding out of string length although length of a is 5. This is a bi

Re: [PATCH][PR89341]Fix ICE on function definition with weakref/alias attributes attached

2019-05-04 Thread JunMa
在 2019/3/26 下午7:40, JunMa 写道: Hi According to gnu document of function attributes, neither weakref nor alias could be attached to a function defined in current translation unit. Although GCC checks the attributes under some circumstances, it still fails on some cases and even causes ICE

Re: [PATCH][Tree-optimization/PR89772]fold memchr builtins for character not in constant nul-padded string

2019-05-04 Thread JunMa
在 2019/3/21 下午12:51, JunMa 写道: Hi For now, gcc can not fold code like: const char a[5] = "123" __builtin_memchr (a, '7', sizeof a) It tries to avoid folding out of string length although length of a is 5. This is a bit conservative, it's safe to folding memchr/

Re: [PATCH GCC10] ipa-inline.c: Trivial fix on function not declared inline check in want_inline_small_function_p

2019-04-29 Thread JunMa
在 2019/4/30 上午5:57, Jeff Law 写道: On 3/1/19 1:39 AM, JunMa wrote: Hi Since MAX_INLINE_INSNS_AUTO should be below or equal to MAX_INLINE_INSNS_SINGLE (see params.def), there is no need to do second inlining limit check on growth when function not declared inline, this patch

[PATCH][PR89341]Fix ICE on function definition with weakref/alias attributes attached

2019-03-26 Thread JunMa
/weakref attribute attaches on a function declaration which has body, and removes the attribute later. This also avoid the ICE. Bootstrapped/regtested on x86_64-linux, ok for GCC10? Regards JunMa gcc/ChangeLog 2019-03-26  Jun Ma     PR89341     * cgraphunit.c (handle_alias_pairs): Check whether

Re: [PATCH][Tree-optimization/PR89772]fold memchr builtins for character not in constant nul-padded string

2019-03-20 Thread JunMa
在 2019/3/21 下午1:06, Bin.Cheng 写道: On Thu, Mar 21, 2019 at 12:57 PM JunMa wrote: Hi For now, gcc can not fold code like: const char a[5] = "123" __builtin_memchr (a, '7', sizeof a) It tries to avoid folding out of string length although length of a is 5. This is a bi

[PATCH][Tree-optimization/PR89772]fold memchr builtins for character not in constant nul-padded string

2019-03-20 Thread JunMa
ring stores in array with some trailing nuls. This patch folds these cases by exposing additional length of trailing nuls in c_getstr(). Bootstrapped/regtested on x86_64-linux, ok for trunk? Regards JunMa gcc/ChangeLog 2019-03-21  Jun Ma     PR Tree-optimization/89772     * fold-const.c (c_gets

Re: [PATCH GCC10] ipa-inline.c: Trivial fix on function not declared inline check in want_inline_small_function_p

2019-03-03 Thread JunMa
Hi   Please ignore the previous mail. 在 2019/3/1 下午10:17, Segher Boessenkool 写道: Hi! On Fri, Mar 01, 2019 at 04:39:38PM +0800, JunMa wrote: Since MAX_INLINE_INSNS_AUTO should be below or equal to MAX_INLINE_INSNS_SINGLE (see params.def), there is no need to do second inlining

回复:[PATCH GCC10] ipa-inline.c: Trivial fix on function not declared inline check in want_inline_small_function_p

2019-03-03 Thread JunMa
-- 发件人:Segher Boessenkool 发送时间:2019年3月1日(星期五) 22:18 收件人:JunMa 抄 送:gcc-patches 主 题:Re: [PATCH GCC10] ipa-inline.c: Trivial fix on function not declared inline check in want_inline_small_function_p Hi! On Fri, Mar 01, 2019 at 04

[PATCH GCC10] ipa-inline.c: Trivial fix on function not declared inline check in want_inline_small_function_p

2019-03-01 Thread JunMa
Hi Since MAX_INLINE_INSNS_AUTO should be below or equal to MAX_INLINE_INSNS_SINGLE (see params.def), there is no need to do second inlining limit check on growth when function not declared inline, this patch removes it. Bootstrapped and tested on x86_64-unknown-linux-gnu, is it ok