diff options
Diffstat (limited to 'gcc/java')
-rw-r--r-- | gcc/java/ChangeLog | 8 | ||||
-rw-r--r-- | gcc/java/parse.c | 22 | ||||
-rw-r--r-- | gcc/java/parse.y | 20 |
3 files changed, 42 insertions, 8 deletions
diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog index 6fbe2af..8bbdad3 100644 --- a/gcc/java/ChangeLog +++ b/gcc/java/ChangeLog @@ -1,3 +1,11 @@ +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. + 1999-10-19 Tom Tromey <tromey@cygnus.com> * jcf-parse.c (parse_source_file): Call jcf_dependency_add_file. diff --git a/gcc/java/parse.c b/gcc/java/parse.c index 9cc96f8..863d1ec 100644 --- a/gcc/java/parse.c +++ b/gcc/java/parse.c @@ -2388,8 +2388,10 @@ int yydebug; /* nonzero means print parse trace */ /* Prevent warning if -Wstrict-prototypes. */ #ifdef __GNUC__ +#ifndef YYPARSE_PARAM int yyparse (void); #endif +#endif #if __GNUC__ > 1 /* GNU C and GNU C++ define this. */ #define __yy_memcpy(TO,FROM,COUNT) __builtin_memcpy(TO,FROM,COUNT) @@ -10613,7 +10615,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; @@ -10815,8 +10819,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) { @@ -11069,7 +11077,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); @@ -13456,6 +13468,7 @@ array_constructor_check_entry (type, entry) 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))) @@ -13471,7 +13484,8 @@ array_constructor_check_entry (type, entry) 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) { diff --git a/gcc/java/parse.y b/gcc/java/parse.y index 0459ed3..1fabf80 100644 --- a/gcc/java/parse.y +++ b/gcc/java/parse.y @@ -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, entry) 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, entry) 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) { |