diff options
| author | bryce <bryce@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-05-31 14:54:37 +0000 |
|---|---|---|
| committer | bryce <bryce@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-05-31 14:54:37 +0000 |
| commit | e45c9c6afed85f7bf4d58eb9cf2403944d8356bb (patch) | |
| tree | 3cb93076533bb4a350d8633ae40722c3ce1e735c | |
| parent | 155c5d86b5f03ce60f34d522fd46e66ccba46d51 (diff) | |
| download | ppe42-gcc-e45c9c6afed85f7bf4d58eb9cf2403944d8356bb.tar.gz ppe42-gcc-e45c9c6afed85f7bf4d58eb9cf2403944d8356bb.zip | |
* jcf-write.c (generate_bytecode_conditional): Correct handling
of unordered conditionals. Add comment.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@82485 138bc75d-0d04-0410-961f-82ee72b054a4
| -rw-r--r-- | gcc/java/ChangeLog | 5 | ||||
| -rw-r--r-- | gcc/java/jcf-write.c | 11 |
2 files changed, 12 insertions, 4 deletions
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 <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> 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; |

