2010-11-24 Maxim Kuvyrkov 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);