On Wed, Oct 21, 2020 at 02:29:07PM +0800, Hongtao Liu via Gcc-patches wrote: > gcc/ChangeLog: > > PR target/97506 > * config/i386/i386-expand.c (ix86_expand_sse_movcc): Move > op_true to dest directly When op_true equals op_false,
Lowercase when in the middle of sentence. Use . instead of , at the end. > --- a/gcc/config/i386/i386-expand.c > +++ b/gcc/config/i386/i386-expand.c > @@ -3525,6 +3525,13 @@ ix86_expand_sse_movcc (rtx dest, rtx cmp, rtx > op_true, rtx op_false) > machine_mode mode = GET_MODE (dest); > machine_mode cmpmode = GET_MODE (cmp); > > + /* Simplify trivial vcond_expr to avoid ICE error in pr97506. */ There is no such thing as vcond_expr, I'd say use VEC_COND_EXPR instead. Please change ICE error to just ICE, ICE stands for internal compiler error, so the error word is in there already. Otherwise LGTM. > + if (rtx_equal_p (op_true, op_false)) > + { > + emit_move_insn (dest, op_true); > + return; > + } > + > /* In AVX512F the result of comparison is an integer mask. */ > bool maskcmp = mode != cmpmode && ix86_valid_mask_cmp_mode (mode); > > diff --git a/gcc/testsuite/gcc.target/i386/pr97506.c > b/gcc/testsuite/gcc.target/i386/pr97506.c > new file mode 100644 > index 00000000000..74714cfab2c > --- /dev/null > +++ b/gcc/testsuite/gcc.target/i386/pr97506.c > @@ -0,0 +1,19 @@ > +/* PR target/97506 */ > +/* { dg-do compile } */ > +/* { dg-options "-Og -finline-functions-called-once -fno-tree-ccp > -mavx512vbmi -mavx512vl" } */ > + > +typedef unsigned char __attribute__ ((__vector_size__ (16))) U; > +typedef int __attribute__ ((__vector_size__ (4))) V; > +U u; > + > +void > +bar (int i, V v) > +{ > + u += (char) i & (char) i > (U){}; > +} > + > +void > +foo (void) > +{ > + bar (0, (V){}); > +} > -- > 2.18.1 > > > -- > BR, > Hongtao Jakub