From: Bryce McKinlay Date: Mon, 31 May 2004 14:54:37 +0000 (+0000) Subject: jcf-write.c (generate_bytecode_conditional): Correct handling of unordered conditionals. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=1aae9cdcf2517fb75451442eb9e93f77db09cd7a;p=gcc.git jcf-write.c (generate_bytecode_conditional): Correct handling of unordered conditionals. * jcf-write.c (generate_bytecode_conditional): Correct handling of unordered conditionals. Add comment. From-SVN: r82485 --- diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog index 05d61d1b02b..0b1585a2526 100644 --- a/gcc/java/ChangeLog +++ b/gcc/java/ChangeLog @@ -1,3 +1,8 @@ +2004-05-31 Bryce McKinlay + + * jcf-write.c (generate_bytecode_conditional): Correct handling + of unordered conditionals. Add comment. + 2004-05-29 Ranjit Mathew Per Bothner diff --git a/gcc/java/jcf-write.c b/gcc/java/jcf-write.c index 5aa6d5ae4e6..b04d55985d9 100644 --- a/gcc/java/jcf-write.c +++ b/gcc/java/jcf-write.c @@ -1179,25 +1179,25 @@ generate_bytecode_conditional (tree exp, op = OPCODE_if_icmpne; goto compare; - case UNLT_EXPR: + case UNLE_EXPR: unordered = 1; case GT_EXPR: op = OPCODE_if_icmpgt; goto compare; - case UNGT_EXPR: + case UNGE_EXPR: unordered = 1; case LT_EXPR: op = OPCODE_if_icmplt; goto compare; - case UNLE_EXPR: + case UNLT_EXPR: unordered = 1; case GE_EXPR: op = OPCODE_if_icmpge; goto compare; - case UNGE_EXPR: + case UNGT_EXPR: unordered = 1; case LE_EXPR: op = OPCODE_if_icmple; @@ -1206,6 +1206,9 @@ generate_bytecode_conditional (tree exp, compare: if (unordered) { + /* UNLT_EXPR(a, b) means 'a < b || unordered(a, b)'. This is + the same as the Java source expression '!(a >= b)', so handle + it that way. */ struct jcf_block *tmp = true_label; true_label = false_label; false_label = tmp;