https://gcc.gnu.org/bugzilla/show_bug.cgi?id=127264
--- Comment #12 from Jakub Jelinek <jakub at gcc dot gnu.org> --- (In reply to Haochen Jiang from comment #10) > (In reply to Haochen Jiang from comment #9) > > (In reply to Haochen Jiang from comment #7) > > > (In reply to Zdenek Sojka from comment #6) > > > > Hello, > > > > > > > > > > > > > > > > RTL checking needs to be enabled on order to see the RTL check issue. > > > > > > > > > > > > > > > > > > > > > > > > > I see your point. Then I will suspect we might have the same issue on > > > cmpccxadd since they are quite similar here. > > > > > > Let me have a look based on that. > > > > Ah I forgot that it is INTVAL went wrong. I will have a fix on that. > > A simple fix for this would be: > > diff --git a/gcc/config/i386/i386-expand.cc b/gcc/config/i386/i386-expand.cc > index 7fa9d7f6b8d..2afbdd1fbba 100644 > --- a/gcc/config/i386/i386-expand.cc > +++ b/gcc/config/i386/i386-expand.cc > @@ -14771,21 +14771,16 @@ ix86_expand_ace_builtin (const struct > builtin_description *d, tree exp, > arg = CALL_EXPR_ARG (exp, i); > op = ix86_expand_unsigned_small_int_cst_argument (arg); > > - if (i == 0 || i == constant) > + if ((i == 0 || i == constant) > + && !insn_p->operand[i + arg_adjust].predicate(op, SImode)) Missing space after predicate.
