On Wed, May 18, 2016 at 10:38 AM, Kugan Vivekanandarajah <kugan.vivekanandara...@linaro.org> wrote: >>>> Please move the whole thing under the else { } case of the ops.length >>>> == 0, ops.length == 1 test chain >>>> as you did for the actual emit of the negate. >>>> >>> >>> I see your point. However, when we remove the (-1) from the ops list, that >>> intern can result in ops.length becoming 1. Therefore, I moved the the >>> following if (negate_result), outside the condition. >> >> Ah, indeed. But now you have to care for ops.length () == 0 and thus >> the unconditonally ops.last () may now trap. So I suggest to >> do > > Done. > >> Yes - the patch is ok with the above suggested change. > > > While testing on an arm variant, vector types are not handled. > Therefore, I had to change: > > + || ((TREE_CODE (last->op) == REAL_CST) > + && real_equal (&TREE_REAL_CST (last->op), &dconstm1)) > > > to > > + || real_minus_onep (last->op)) > > > Is this Still OK. Bootstrap and regression testing on ARM, AARCH64 and > x86-64 didn’t have any new regressions.
Yes. Thanks, Richard. > Thanks, > Kugan