diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index ec8b683b9460f5fdcfcbf1acb8f4c5be1061d7ac..c08b5cd45a381826cb4774972a7dc6c8663a4b89 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2012-07-02  Jakub Jelinek  <jakub@redhat.com>
+
+	PR tree-optimization/53645
+	* tree-vect-generic.c (expand_vector_divmod): Use TYPE_MODE (type)
+	instead of TYPE_MODE (wider_type) as can_vec_perm_p argument.
+
 2012-07-01  Wei Guozhi  <carrot@google.com>
 
 	PR target/53447
diff --git a/gcc/tree-vect-generic.c b/gcc/tree-vect-generic.c
index 37fa5e3665ff6e44792681746b3911cc7483bcf2..8d051015d8bd6645a6e18f8cb7d67f892fbfda2b 100644
--- a/gcc/tree-vect-generic.c
+++ b/gcc/tree-vect-generic.c
@@ -768,7 +768,7 @@ expand_vector_divmod (gimple_stmt_iterator *gsi, tree type, tree op0,
 	{
 	  for (i = 0; i < nunits; i++)
 	    sel[i] = !BYTES_BIG_ENDIAN + (i & ~1) + ((i & 1) ? nunits : 0);
-	  if (!can_vec_perm_p (TYPE_MODE (wider_type), false, sel))
+	  if (!can_vec_perm_p (TYPE_MODE (type), false, sel))
 	    decl_e = decl_o = NULL_TREE;
 	}
       else