diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index f01ef1077879acb337442bccf348d1cf3ee57811..2a0d0bb8bf7fbe10ebf3e5929266c2e2cfcd87e4 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2006-12-11  Zdenek Dvorak <dvorakz@suse.cz>
+
+	PR rtl-optimization/30113
+	* loop-iv.c (implies_p): Require the mode of the operands to be
+	scalar.
+
 2006-12-11  Diego Novillo  <dnovillo@redhat.com>
 
 	* tree-ssa-operands.h (create_ssa_artificial_load_stmt):
diff --git a/gcc/loop-iv.c b/gcc/loop-iv.c
index e234fd93b7993283edaa06a167021e60ed36fe3f..fcf4a2525af51272cbf763a508b175cf919c5b89 100644
--- a/gcc/loop-iv.c
+++ b/gcc/loop-iv.c
@@ -1490,7 +1490,7 @@ implies_p (rtx a, rtx b)
 	    mode = VOIDmode;
 	}
 
-      if (mode != VOIDmode
+      if (SCALAR_INT_MODE_P (mode)
 	  && rtx_equal_p (op1, opb1)
 	  && simplify_gen_binary (MINUS, mode, opb0, op0) == const1_rtx)
 	return true;