From b58e485c04591065c0b167946ef94e5a599e8e1b Mon Sep 17 00:00:00 2001 From: apbianco Date: Fri, 22 Oct 1999 05:27:34 +0000 Subject: [PATCH] Wed Oct 20 01:41:47 1999 Alexandre Petit-Bianco * 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. This patch fixes the net PR #37 (http://sourceware.cygnus.com/ml/java-prs/1999-q3/msg00043.html) git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@30126 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/java/ChangeLog | 8 ++++++++ gcc/java/parse.c | 22 ++++++++++++++++++---- 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 + + * 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 * 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) { -- 2.7.4