mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-02-11 22:41:03 +08:00
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
This commit is contained in:
parent
b47785f4ab
commit
1aae9cdcf2
@ -1,3 +1,8 @@
|
||||
2004-05-31 Bryce McKinlay <mckinlay@redhat.com>
|
||||
|
||||
* jcf-write.c (generate_bytecode_conditional): Correct handling
|
||||
of unordered conditionals. Add comment.
|
||||
|
||||
2004-05-29 Ranjit Mathew <rmathew@hotmail.com>
|
||||
Per Bothner <per@bothner.com>
|
||||
|
||||
|
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user