From 1319e88eb1a3825e485708e630aebcef2535f9e3 Mon Sep 17 00:00:00 2001 From: Andrew Haley Date: Thu, 18 Sep 2003 10:09:17 +0000 Subject: [PATCH] jcf-write.c (generate_bytecode_insns): Add MIN_EXPR and MAX_EXPR. 2003-09-16 Andrew Haley * jcf-write.c (generate_bytecode_insns): Add MIN_EXPR and MAX_EXPR. From-SVN: r71514 --- gcc/java/ChangeLog | 4 ++++ gcc/java/jcf-write.c | 17 +++++++++++++++++ 2 files changed, 21 insertions(+) diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog index a3cee95..a171aa1 100644 --- a/gcc/java/ChangeLog +++ b/gcc/java/ChangeLog @@ -1,3 +1,7 @@ +2003-09-16 Andrew Haley + + * jcf-write.c (generate_bytecode_insns): Add MIN_EXPR and MAX_EXPR. + 2003-09-17 Ranjit Mathew Fixes PR java/9577 diff --git a/gcc/java/jcf-write.c b/gcc/java/jcf-write.c index 3609807..febd04f 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)); -- 2.7.4