summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoraph <aph@138bc75d-0d04-0410-961f-82ee72b054a4>2003-09-18 10:09:17 +0000
committeraph <aph@138bc75d-0d04-0410-961f-82ee72b054a4>2003-09-18 10:09:17 +0000
commit5f2cc6d814efbf21ca04c2f488c42ca2261ac452 (patch)
tree88546ee135204c607700f54c24ce0196b82abc6c
parentd7b8e04e33f7f3d5ddd023ca695ca2f4e0eb1a8a (diff)
downloadppe42-gcc-5f2cc6d814efbf21ca04c2f488c42ca2261ac452.tar.gz
ppe42-gcc-5f2cc6d814efbf21ca04c2f488c42ca2261ac452.zip
2003-09-16 Andrew Haley <aph@redhat.com>
* jcf-write.c (generate_bytecode_insns): Add MIN_EXPR and MAX_EXPR. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@71514 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/java/ChangeLog4
-rw-r--r--gcc/java/jcf-write.c17
2 files changed, 21 insertions, 0 deletions
diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog
index a3cee951748..a171aa1bd98 100644
--- a/gcc/java/ChangeLog
+++ b/gcc/java/ChangeLog
@@ -1,3 +1,7 @@
+2003-09-16 Andrew Haley <aph@redhat.com>
+
+ * jcf-write.c (generate_bytecode_insns): Add MIN_EXPR and MAX_EXPR.
+
2003-09-17 Ranjit Mathew <rmathew@hotmail.com>
Fixes PR java/9577
diff --git a/gcc/java/jcf-write.c b/gcc/java/jcf-write.c
index 3609807a410..febd04fbcaa 100644
--- a/gcc/java/jcf-write.c
+++ b/gcc/java/jcf-write.c
@@ -2413,6 +2413,23 @@ generate_bytecode_insns (tree exp, int target, struct jcf_partial *state)
case JAVA_EXC_OBJ_EXPR:
NOTE_PUSH (1); /* Pushed by exception system. */
break;
+ case MIN_EXPR:
+ case MAX_EXPR:
+ {
+ /* This copes with cases where fold() has created MIN or MAX
+ from a conditional expression. */
+ enum tree_code code = TREE_CODE (exp) == MIN_EXPR ? LT_EXPR : GT_EXPR;
+ tree op0 = TREE_OPERAND (exp, 0);
+ tree op1 = TREE_OPERAND (exp, 1);
+ tree x;
+ if (TREE_SIDE_EFFECTS (op0) || TREE_SIDE_EFFECTS (op1))
+ abort ();
+ x = build (COND_EXPR, TREE_TYPE (exp),
+ build (code, boolean_type_node, op0, op1),
+ op0, op1);
+ generate_bytecode_insns (x, target, state);
+ break;
+ }
case NEW_CLASS_EXPR:
{
tree class = TREE_TYPE (TREE_TYPE (exp));
OpenPOWER on IntegriCloud