Re: [PATCH, CHKP] Don't try to optimize bounds returned by strchr
2014-12-06 1:55 GMT+03:00 Jeff Law l...@redhat.com: On 12/02/14 06:40, Ilya Enkovich wrote: Hi, For strchr calls bounds of the first argument are considered as returned which is wrong because NULL may be returned. This patch fixes that. Bootstrapped and tested on x86_64-unknown-linux-gnu. OK for trunk? Thanks, Ilya -- 2014-12-02 Ilya Enkovich ilya.enkov...@intel.com * tree-chkp.c (chkp_build_returned_bound): Don't predict return bounds for strchr calls. OK. Do you have a testcase you could add to the suite? I cannot add a nice test for bounds returned by strchr for NULL until it is wrapped (which will happen eventually). Thanks, Ilya Jeff
Re: [PATCH, CHKP] Don't try to optimize bounds returned by strchr
On 12/02/14 06:40, Ilya Enkovich wrote: Hi, For strchr calls bounds of the first argument are considered as returned which is wrong because NULL may be returned. This patch fixes that. Bootstrapped and tested on x86_64-unknown-linux-gnu. OK for trunk? Thanks, Ilya -- 2014-12-02 Ilya Enkovich ilya.enkov...@intel.com * tree-chkp.c (chkp_build_returned_bound): Don't predict return bounds for strchr calls. OK. Do you have a testcase you could add to the suite? Jeff
[PATCH, CHKP] Don't try to optimize bounds returned by strchr
Hi, For strchr calls bounds of the first argument are considered as returned which is wrong because NULL may be returned. This patch fixes that. Bootstrapped and tested on x86_64-unknown-linux-gnu. OK for trunk? Thanks, Ilya -- 2014-12-02 Ilya Enkovich ilya.enkov...@intel.com * tree-chkp.c (chkp_build_returned_bound): Don't predict return bounds for strchr calls. diff --git a/gcc/tree-chkp.c b/gcc/tree-chkp.c index f7def51..1d91aa6 100644 --- a/gcc/tree-chkp.c +++ b/gcc/tree-chkp.c @@ -2163,8 +2163,7 @@ chkp_build_returned_bound (gcall *call) } /* Do not use retbnd when returned bounds are equal to some of passed bounds. */ - else if ((gimple_call_return_flags (call) ERF_RETURNS_ARG) - || gimple_call_builtin_p (call, BUILT_IN_STRCHR)) + else if (gimple_call_return_flags (call) ERF_RETURNS_ARG) { gimple_stmt_iterator iter = gsi_for_stmt (call); unsigned int retarg = 0, argno;