http://gcc.gnu.org/bugzilla/show_bug.cgi?id=28685
--- Comment #19 from Uros Bizjak <ubizjak at gmail dot com> 2012-02-06 21:36:01
UTC ---
(In reply to comment #4)
> Another similar, but yet different case:
Yet another similar test:
int test (int a, int b)
{
int lt = a + b < 0;
int eq = a + b == 0;
if (lt)
return 1;
return eq;
}
combine pass creates:
(set (reg:CCZ 17 flags)
(compare:CCZ (plus:SI (reg/v:SI 63 [ a ])
(reg/v:SI 64 [ b ]))
(const_int 0 [0])))
(set (reg:SI 60 [ D.1710 ])
(plus:SI (reg/v:SI 63 [ a ])
(reg/v:SI 64 [ b ])))
we have a discrepancy here, since compare elimination pass expects RTX in the
form of:
[(operate)
(set-cc)]