* [patch] Remove unused java/expr.c:force_evaluation_order
@ 2012-07-11 9:45 Steven Bosscher
2012-07-11 10:11 ` Andrew Haley
0 siblings, 1 reply; 2+ messages in thread
From: Steven Bosscher @ 2012-07-11 9:45 UTC (permalink / raw)
To: java-patches, GCC Patches
Hello,
Remove force_evaluation_order because the only caller is
force_evaluation_order itself.
Will commit after a few days, if no-one objects.
Ciao!
Steven
java/
* java-tree.h (force_evaluation_order): Remove prototype.
* expr.c (force_evaluation_order): Remove unused function.
Index: java-tree.h
===================================================================
--- java-tree.h (revision 189423)
+++ java-tree.h (working copy)
@@ -1094,7 +1094,6 @@ extern int merge_type_state (tree);
extern int push_type_0 (tree);
extern void push_type (tree);
extern void add_interface (tree, tree);
-extern tree force_evaluation_order (tree);
extern tree java_create_object (tree);
extern int verify_constant_pool (struct JCF *);
extern void start_java_method (tree);
Index: expr.c
===================================================================
--- expr.c (revision 189423)
+++ expr.c (working copy)
@@ -3689,82 +3689,6 @@ maybe_adjust_start_pc (struct JCF *jcf,
return start_pc;
}
-/* Force the (direct) sub-operands of NODE to be evaluated in left-to-right
- order, as specified by Java Language Specification.
-
- The problem is that while expand_expr will evaluate its sub-operands in
- left-to-right order, for variables it will just return an rtx (i.e.
- an lvalue) for the variable (rather than an rvalue). So it is possible
- that a later sub-operand will change the register, and when the
- actual operation is done, it will use the new value, when it should
- have used the original value.
-
- We fix this by using save_expr. This forces the sub-operand to be
- copied into a fresh virtual register,
-
- For method invocation, we modify the arguments so that a
- left-to-right order evaluation is performed. Saved expressions
- will, in CALL_EXPR order, be reused when the call will be expanded.
-
- We also promote outgoing args if needed. */
-
-tree
-force_evaluation_order (tree node)
-{
- if (flag_syntax_only)
- return node;
- if (TREE_CODE (node) == CALL_EXPR
- || (TREE_CODE (node) == COMPOUND_EXPR
- && TREE_CODE (TREE_OPERAND (node, 0)) == CALL_EXPR
- && TREE_CODE (TREE_OPERAND (node, 1)) == SAVE_EXPR))
- {
- tree call, cmp;
- int i, nargs;
-
- /* Account for wrapped around ctors. */
- if (TREE_CODE (node) == COMPOUND_EXPR)
- call = TREE_OPERAND (node, 0);
- else
- call = node;
-
- nargs = call_expr_nargs (call);
-
- /* This reverses the evaluation order. This is a desired effect. */
- for (i = 0, cmp = NULL_TREE; i < nargs; i++)
- {
- tree arg = CALL_EXPR_ARG (call, i);
- /* Promote types smaller than integer. This is required by
- some ABIs. */
- tree type = TREE_TYPE (arg);
- tree saved;
- if (targetm.calls.promote_prototypes (type)
- && INTEGRAL_TYPE_P (type)
- && INT_CST_LT_UNSIGNED (TYPE_SIZE (type),
- TYPE_SIZE (integer_type_node)))
- arg = fold_convert (integer_type_node, arg);
-
- saved = save_expr (force_evaluation_order (arg));
- cmp = (cmp == NULL_TREE ? saved :
- build2 (COMPOUND_EXPR, void_type_node, cmp, saved));
-
- CALL_EXPR_ARG (call, i) = saved;
- }
-
- if (cmp && TREE_CODE (cmp) == COMPOUND_EXPR)
- TREE_SIDE_EFFECTS (cmp) = 1;
-
- if (cmp)
- {
- cmp = build2 (COMPOUND_EXPR, TREE_TYPE (node), cmp, node);
- if (TREE_TYPE (cmp) != void_type_node)
- cmp = save_expr (cmp);
- TREE_SIDE_EFFECTS (cmp) = 1;
- node = cmp;
- }
- }
- return node;
-}
-
/* Build a node to represent empty statements and blocks. */
tree
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: [patch] Remove unused java/expr.c:force_evaluation_order
2012-07-11 9:45 [patch] Remove unused java/expr.c:force_evaluation_order Steven Bosscher
@ 2012-07-11 10:11 ` Andrew Haley
0 siblings, 0 replies; 2+ messages in thread
From: Andrew Haley @ 2012-07-11 10:11 UTC (permalink / raw)
To: Steven Bosscher; +Cc: java-patches, GCC Patches
On 07/11/2012 10:44 AM, Steven Bosscher wrote:
> Remove force_evaluation_order because the only caller is
> force_evaluation_order itself.
> Will commit after a few days, if no-one objects.
No problem. I presume that its caller was removed because it wasn't
needed, but I don't quite know why it wasn't needed. Perhaps it's a
side-effect of the Tree-SSA conversion.
Andrew.
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2012-07-11 10:11 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-07-11 9:45 [patch] Remove unused java/expr.c:force_evaluation_order Steven Bosscher
2012-07-11 10:11 ` Andrew Haley
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).