https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87188
--- Comment #20 from rguenther at suse dot de <rguenther at suse dot de> --- On September 6, 2018 12:58:33 PM GMT+01:00, "dave.anglin at bell dot net" <gcc-bugzi...@gcc.gnu.org> wrote: >https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87188 > >--- Comment #16 from dave.anglin at bell dot net --- >On 2018-09-05 7:38 PM, dave.anglin at bell dot net wrote: >> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87188 >> >> --- Comment #15 from dave.anglin at bell dot net --- >> On 2018-09-05 7:21 PM, dave.anglin at bell dot net wrote: >>> Doing a "&" operation on a function pointer looks bad. >> No, I misread this line "_12 = SR.13_1 == operator!=;". It looks >like >> an expand problem. >We only get canonicalization of function pointers when we expand using >do_compare_and_jump(). >In the ifcombine pass, we transform the operation to "_12 = SR.13_1 == >operator!=;". I believe this >expands to one of the scc patterns without canonicalization. In the last patch you replace arg0 || arg1 with arg0 & & arg1, that looks wrong. Otherwise the patch looks OK.