2010-11-24  Maxim Kuvyrkov  <maxim@codesourcery.com>

	gcc/
	* loop-iv.c (get_biv_step): Workaround loop analysis ICE.

=== modified file 'gcc/loop-iv.c'
--- old/gcc/loop-iv.c	2009-11-25 10:55:54 +0000
+++ new/gcc/loop-iv.c	2010-12-10 15:32:04 +0000
@@ -796,6 +796,13 @@
 		       outer_step))
     return false;
 
+  /* CSL local: workaround get_biv_step_1() inability to handle DU
+     chains originating at sets of subregs.  Such subregs are introduced
+     by Tom's extension elimination pass.  For upstream duscussion see
+     http://gcc.gnu.org/ml/gcc/2010-11/msg00552.html .  */
+  if (!((*inner_mode == *outer_mode) != (*extend != UNKNOWN)))
+    return false;
+
   gcc_assert ((*inner_mode == *outer_mode) != (*extend != UNKNOWN));
   gcc_assert (*inner_mode != *outer_mode || *outer_step == const0_rtx);
 

