https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85232
--- Comment #3 from rguenther at suse dot de <rguenther at suse dot de> --- On Fri, 6 Apr 2018, jakub at gcc dot gnu.org wrote: > https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85232 > > --- Comment #2 from Jakub Jelinek <jakub at gcc dot gnu.org> --- > if-conversion is attempted, but fails. > I can get it to work (as in, use the simd clones) if fun1 is > __attribute__((const)); and when using -ffast-math. > const attribute is needed to prove no side-effects. > > Now, not really sure why we require all data refs in the loop to be > analyzable; > perhaps if find_data_references_in_loop fails, we should just remember it and > if-convert only if the blocks have no data references at all (that is the case > here)? we don't need data references to be analyzable for if-conversion, all not analyzable refs can be simply "skipped" AFAIK. So I'd just open-code find_data_references_in_loop like other passes do and ignore the non-analyzable refs.