This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[PATCH] Fix for net PR #37
- To: egcs-patches at egcs dot cygnus dot com
- Subject: [PATCH] Fix for net PR #37
- From: Alexandre Petit-Bianco <apbianco at cygnus dot com>
- Date: Thu, 21 Oct 1999 22:32:37 -0700
I checked in a patch to fix the net PR #37:
http://sourceware.cygnus.com/ml/java-prs/1999-q3/msg00043.html
./A
Wed Oct 20 01:41:47 1999 Alexandre Petit-Bianco <apbianco@cygnus.com>
* parse.y (java_complete_tree): fold_constant_for_init to work on
permanent_obstack.
(java_complete_lhs): Likewise.
(array_constructor_check_entry): Complete an initializer element
on permanent_obstack.
Index: parse.y
===================================================================
RCS file: /cvs/gcc/egcs/gcc/java/parse.y,v
retrieving revision 1.112
diff -u -p -r1.112 parse.y
--- parse.y 1999/10/14 17:13:56 1.112
+++ parse.y 1999/10/22 05:25:31
@@ -8028,7 +8028,9 @@ java_complete_tree (node)
{
tree value = DECL_INITIAL (node);
DECL_INITIAL (node) = NULL_TREE;
+ push_obstacks (&permanent_obstack, &permanent_obstack);
value = fold_constant_for_init (value, node);
+ pop_obstacks ();
DECL_INITIAL (node) = value;
if (value != NULL_TREE)
return value;
@@ -8230,8 +8232,12 @@ java_complete_lhs (node)
&& JDECL_P (TREE_OPERAND (cn, 1))
&& FIELD_FINAL (TREE_OPERAND (cn, 1))
&& DECL_INITIAL (TREE_OPERAND (cn, 1)))
- cn = fold_constant_for_init (DECL_INITIAL (TREE_OPERAND (cn, 1)),
- TREE_OPERAND (cn, 1));
+ {
+ push_obstacks (&permanent_obstack, &permanent_obstack);
+ cn = fold_constant_for_init (DECL_INITIAL (TREE_OPERAND (cn, 1)),
+ TREE_OPERAND (cn, 1));
+ pop_obstacks ();
+ }
if (!TREE_CONSTANT (cn) && !flag_emit_xref)
{
@@ -8484,7 +8490,11 @@ java_complete_lhs (node)
&& TREE_CODE (nn) == VAR_DECL && TREE_STATIC (nn)
&& DECL_INITIAL (nn) != NULL_TREE)
{
- tree value = fold_constant_for_init (nn, nn);
+ tree value;
+
+ push_obstacks (&permanent_obstack, &permanent_obstack);
+ value = fold_constant_for_init (nn, nn);
+ pop_obstacks ();
if (value != NULL_TREE)
{
tree type = TREE_TYPE (value);
@@ -10871,6 +10881,7 @@ array_constructor_check_entry (type, ent
new_value = NULL_TREE;
wfl_value = TREE_VALUE (entry);
+ push_obstacks (&permanent_obstack, &permanent_obstack);
value = java_complete_tree (TREE_VALUE (entry));
/* patch_string return error_mark_node if arg is error_mark_node */
if ((patched = patch_string (value)))
@@ -10886,7 +10897,8 @@ array_constructor_check_entry (type, ent
new_value = try_builtin_assignconv (wfl_operator, type, value);
if (!new_value && (new_value = try_reference_assignconv (type, value)))
type_value = promote_type (type);
-
+
+ pop_obstacks ();
/* Check and report errors */
if (!new_value)
{