Wed Oct 20 01:41:47 1999 Alexandre Petit-Bianco <apbianco@cygnus.com>
authorapbianco <apbianco@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 22 Oct 1999 05:27:34 +0000 (05:27 +0000)
committerapbianco <apbianco@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 22 Oct 1999 05:27:34 +0000 (05:27 +0000)
* 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
gcc/java/parse.c
gcc/java/parse.y

index 6fbe2af..8bbdad3 100644 (file)
@@ -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.
index 9cc96f8..863d1ec 100644 (file)
@@ -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
 \f
 #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)
     {
index 0459ed3..1fabf80 100644 (file)
@@ -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)
     {