diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 288f5107940cbc829771853f393fe9fc8f74dd4e..b1094d701e8caf04cb9464f9de4b262684525466 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2002-03-28 Richard Henderson <rth@redhat.com> + + * config/alpha/alpha.c (alpha_emit_conditional_branch): TFmode NE + comparison should be done vs !=0 not >0 return code. Tidy cases. + 2002-03-28 Richard Henderson <rth@redhat.com> * c-decl.c (finish_function): New arg can_defer_p. Pass it diff --git a/gcc/config/alpha/alpha.c b/gcc/config/alpha/alpha.c index 6893677a2066f392fa1730ece86bc4287c268129..73baa891e7e477c24be8bba684118323dd165c97 100644 --- a/gcc/config/alpha/alpha.c +++ b/gcc/config/alpha/alpha.c @@ -2812,21 +2812,29 @@ alpha_emit_conditional_branch (code) 1 true Convert the compare against the raw return value. */ - if (code == UNORDERED || code == ORDERED) - cmp_code = EQ; - else - cmp_code = code; + switch (code) + { + case UNORDERED: + cmp_code = EQ; + code = LT; + break; + case ORDERED: + cmp_code = EQ; + code = GE; + break; + case NE: + cmp_code = NE; + code = NE; + break; + default: + cmp_code = code; + code = GT; + break; + } op0 = alpha_emit_xfloating_compare (cmp_code, op0, op1); op1 = const0_rtx; alpha_compare.fp_p = 0; - - if (code == UNORDERED) - code = LT; - else if (code == ORDERED) - code = GE; - else - code = GT; } /* The general case: fold the comparison code to the types of compares