On Fri, Oct 7, 2016 at 10:41 AM, Martin Liška <mli...@suse.cz> wrote:
> Resending the patch, where I implemented folding in gimple-fold.c
>
> Patch can bootstrap on ppc64le-redhat-linux and survives regression tests.

+/* Fold a call to the str{n}{case}cmp builtin pointed by GSI iterator.
+   FCODE is the name of the builtin.  */

wrong comment

+static bool
+gimple_fold_builtin_memchr (gimple_stmt_iterator *gsi)

+       {
+         replace_call_with_value (gsi, build_int_cst (type, 0));

use ptr_type_node (void *) instead of type here and below.

+         HOST_WIDE_INT offset = r - p1;
+         if (compare_tree_int (len, offset) <= 0)
+           {

== 0 can occur in which case we have to return a pointer to the
first char.  I think len < offset can't happen with memchr?

+             replace_call_with_value (gsi, build_int_cst (type, 0));
+             return true;
+           }
+         else
+           {
+             tree temp = fold_build_pointer_plus_hwi_loc (loc, arg1, offset);
+             replace_call_with_value (gsi, temp);

That yields valid GIMPLE by chance, I'd prefer if you'd built that to a
stmt and use the replace-with-vops.

+             return true;
+           }


> Ready to be installed?
> Martin

Reply via email to