--- gcc/tree-vect-stmts.c.jj	2011-10-28 16:21:06.000000000 +0200
+++ gcc/tree-vect-stmts.c	2011-10-28 20:19:27.000000000 +0200
@@ -2483,6 +2483,13 @@ vectorizable_shift (gimple stmt, gimple_
                  dealing with vectors of short/char.  */
               if (dt[1] == vect_constant_def)
                 op1 = fold_convert (TREE_TYPE (vectype), op1);
+	      else if (!useless_type_conversion_p (TREE_TYPE (vectype),
+						   TREE_TYPE (op1)))
+		{
+		  op1 = fold_convert (TREE_TYPE (vectype), op1);
+		  op1 = vect_init_vector (stmt, op1, TREE_TYPE (vectype),
+					  NULL);
+		}
             }
         }
     }
