http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57098



Uros Bizjak <ubizjak at gmail dot com> changed:



           What    |Removed                     |Added

----------------------------------------------------------------------------

             Status|NEW                         |ASSIGNED

         AssignedTo|unassigned at gcc dot       |ubizjak at gmail dot com

                   |gnu.org                     |

   Target Milestone|---                         |4.7.4



--- Comment #2 from Uros Bizjak <ubizjak at gmail dot com> 2013-04-29 15:26:09 
UTC ---

A bunch of validize_mem calls are missing. Patch in testing:



--cut here--

Index: i386.c

===================================================================

--- i386.c      (revision 198401)

+++ i386.c      (working copy)

@@ -20559,7 +20559,7 @@ ix86_expand_vec_perm (rtx operands[])

              vec[i * 2 + 1] = const1_rtx;

            }

          vt = gen_rtx_CONST_VECTOR (maskmode, gen_rtvec_v (w, vec));

-         vt = force_const_mem (maskmode, vt);

+         vt = validize_mem (force_const_mem (maskmode, vt));

          t1 = expand_simple_binop (maskmode, PLUS, t1, vt, t1, 1,

                                    OPTAB_DIRECT);



@@ -20756,7 +20756,7 @@ ix86_expand_vec_perm (rtx operands[])

       for (i = 0; i < 16; ++i)

        vec[i] = GEN_INT (i/e * e);

       vt = gen_rtx_CONST_VECTOR (V16QImode, gen_rtvec_v (16, vec));

-      vt = force_const_mem (V16QImode, vt);

+      vt = validize_mem (force_const_mem (V16QImode, vt));

       if (TARGET_XOP)

        emit_insn (gen_xop_pperm (mask, mask, mask, vt));

       else

@@ -20767,7 +20767,7 @@ ix86_expand_vec_perm (rtx operands[])

       for (i = 0; i < 16; ++i)

        vec[i] = GEN_INT (i % e);

       vt = gen_rtx_CONST_VECTOR (V16QImode, gen_rtvec_v (16, vec));

-      vt = force_const_mem (V16QImode, vt);

+      vt = validize_mem (force_const_mem (V16QImode, vt));

       emit_insn (gen_addv16qi3 (mask, mask, vt));

     }



--cut here--

Reply via email to