http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48412
--- Comment #5 from Joost VandeVondele <Joost.VandeVondele at pci dot uzh.ch> 2011-04-04 11:49:15 UTC --- the dumped code: __var_2 = __var_1 %[fl] 2; __var_1 = ABS_EXPR <*ma - *lx>; if (*m < 0 && __var_2 == 1 || *m > 0 && __var_2 == 0) shows clearly what is wrong, var_2 is using var_1 before it is used.