If you have an insn that does "test<const>,<reg>", gcc will look for
a pattern that uses zero_extract to generate the "condition" when
<const> is a power of two. However, canincalize_condition gets passed
this condition, and only expects the RTL at this point to have two
subexpressions. Zero_extract has three, so it blows up:
return gen_rtx_fmt_ee (code, VOIDmode, op0, op1);
This is a simple check for this case, but is it the right solution?
Would it be better to:
* Check for a generic "this rtl has more than 2 xexp's"?