aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexandre Petit-Bianco <apbianco@cygnus.com>1999-03-16 03:38:15 +0000
committerAlexandre Petit-Bianco <apbianco@gcc.gnu.org>1999-03-15 19:38:15 -0800
commit642f15d187811ecd3bb831ec61cc55c196f35b57 (patch)
tree04486ff7c61efbf307ea3265163395aed8c883c3
parentdacbe76fd2f346da8867eb288ba6123995690a06 (diff)
downloadgcc-642f15d187811ecd3bb831ec61cc55c196f35b57.zip
gcc-642f15d187811ecd3bb831ec61cc55c196f35b57.tar.gz
gcc-642f15d187811ecd3bb831ec61cc55c196f35b57.tar.bz2
parse.y (java_stabilize_reference): Use save_expr instead of building a SAVE_EXPR node.
1999-03-16 Alexandre Petit-Bianco <apbianco@cygnus.com> * parse.y (java_stabilize_reference): Use save_expr instead of building a SAVE_EXPR node. (java_complete_lhs): Patch the resulting string of the `+=' operator (if necessary) and complete the RHS after having built the cast. From-SVN: r25797
-rw-r--r--gcc/java/ChangeLog8
-rw-r--r--gcc/java/parse.c9
-rw-r--r--gcc/java/parse.y9
3 files changed, 20 insertions, 6 deletions
diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog
index 7c00271..e06e957 100644
--- a/gcc/java/ChangeLog
+++ b/gcc/java/ChangeLog
@@ -1,3 +1,11 @@
+1999-03-16 Alexandre Petit-Bianco <apbianco@cygnus.com>
+
+ * parse.y (java_stabilize_reference): Use save_expr instead of
+ building a SAVE_EXPR node.
+ (java_complete_lhs): Patch the resulting string of the `+='
+ operator (if necessary) and complete the RHS after having built
+ the cast.
+
Mon Mar 15 12:18:29 1999 Per Bothner <bothner@cygnus.com>
* class.c (make_class): Don't set CLASS_P here (because
diff --git a/gcc/java/parse.c b/gcc/java/parse.c
index 63e6662..f090ca5 100644
--- a/gcc/java/parse.c
+++ b/gcc/java/parse.c
@@ -10122,7 +10122,7 @@ java_stabilize_reference (node)
{
tree op0 = TREE_OPERAND (node, 0);
tree op1 = TREE_OPERAND (node, 1);
- TREE_OPERAND (node, 0) = build1 (SAVE_EXPR, TREE_TYPE (op0), op0);
+ TREE_OPERAND (node, 0) = save_expr (op0);
TREE_OPERAND (node, 1) = java_stabilize_reference (op1);
return node;
}
@@ -10537,9 +10537,13 @@ java_complete_lhs (node)
/* Now complete the RHS. We write it back later on. */
nn = java_complete_tree (TREE_OPERAND (node, 1));
+ if ((cn = patch_string (nn)))
+ nn = cn;
+
/* The last part of the rewrite for E1 op= E2 is to have
E1 = (T)(E1 op E2), with T being the type of E1. */
- nn = build_cast (EXPR_WFL_LINECOL (wfl_op2), TREE_TYPE (lvalue), nn);
+ nn = java_complete_tree (build_cast (EXPR_WFL_LINECOL (wfl_op2),
+ TREE_TYPE (lvalue), nn));
}
/* If we're about to patch a NEW_ARRAY_INIT, we call a special
@@ -11986,7 +11990,6 @@ build_string_concatenation (op1, op2)
{
tree result;
int side_effects = TREE_SIDE_EFFECTS (op1) | TREE_SIDE_EFFECTS (op2);
-
/* Try to do some static optimization */
if ((result = string_constant_concatenation (op1, op2)))
diff --git a/gcc/java/parse.y b/gcc/java/parse.y
index 75ffbc3..3e5bd74 100644
--- a/gcc/java/parse.y
+++ b/gcc/java/parse.y
@@ -7520,7 +7520,7 @@ java_stabilize_reference (node)
{
tree op0 = TREE_OPERAND (node, 0);
tree op1 = TREE_OPERAND (node, 1);
- TREE_OPERAND (node, 0) = build1 (SAVE_EXPR, TREE_TYPE (op0), op0);
+ TREE_OPERAND (node, 0) = save_expr (op0);
TREE_OPERAND (node, 1) = java_stabilize_reference (op1);
return node;
}
@@ -7935,9 +7935,13 @@ java_complete_lhs (node)
/* Now complete the RHS. We write it back later on. */
nn = java_complete_tree (TREE_OPERAND (node, 1));
+ if ((cn = patch_string (nn)))
+ nn = cn;
+
/* The last part of the rewrite for E1 op= E2 is to have
E1 = (T)(E1 op E2), with T being the type of E1. */
- nn = build_cast (EXPR_WFL_LINECOL (wfl_op2), TREE_TYPE (lvalue), nn);
+ nn = java_complete_tree (build_cast (EXPR_WFL_LINECOL (wfl_op2),
+ TREE_TYPE (lvalue), nn));
}
/* If we're about to patch a NEW_ARRAY_INIT, we call a special
@@ -9384,7 +9388,6 @@ build_string_concatenation (op1, op2)
{
tree result;
int side_effects = TREE_SIDE_EFFECTS (op1) | TREE_SIDE_EFFECTS (op2);
-
/* Try to do some static optimization */
if ((result = string_constant_concatenation (op1, op2)))