https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110812

--- Comment #26 from Kito Cheng <kito at gcc dot gnu.org> ---
Hi Andreas:

Thanks for report the test result!

And I can reproduce the highway's issue on my hand, and I suspect it's FRE's
bug,
I can pass with drop few patterns in gimple.md:

```diff
diff --git a/gcc/match.pd b/gcc/match.pd
index 66e8a7874493..198db5a0e069 100644
--- a/gcc/match.pd
+++ b/gcc/match.pd
@@ -10705,13 +10705,13 @@ and,
  (simplify
   (vec_cond @0 (view_convert? (uncond_op@3 @1)) @2)
    (with { tree op_type = TREE_TYPE (@3); }
-    (if (vectorized_internal_fn_supported_p (as_internal_fn (cond_op),
op_type)
+    (if (false && vectorized_internal_fn_supported_p (as_internal_fn
(cond_op), op_type)
         && is_truth_type_for (op_type, TREE_TYPE (@0)))
      (cond_op @0 (view_convert @1) @2))))
  (simplify
   (vec_cond @0 @1 (view_convert? (uncond_op@3 @2)))
    (with { tree op_type = TREE_TYPE (@3); }
-    (if (vectorized_internal_fn_supported_p (as_internal_fn (cond_op),
op_type)
+    (if (false && vectorized_internal_fn_supported_p (as_internal_fn
(cond_op), op_type)
         && is_truth_type_for (op_type, TREE_TYPE (@0)))
      (cond_op (bit_not @0) (view_convert @2) @1)))))

```

The issue seems like the FRE's code expect the stmt is gassign but the stmt
became gcall (.COND_NE) during gimple simplify, so it should not a RISC-V
specific bug, I will try to extract a reduce case and file a bug for that, and
meanwhile, I will send out my patch to mailing list for review :)

Thanks again :)

Reply via email to