OSDN Git Service

70th Cygnus<->FSF merge
authormrs <mrs@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 11 May 1995 21:36:16 +0000 (21:36 +0000)
committermrs <mrs@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 11 May 1995 21:36:16 +0000 (21:36 +0000)
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@9624 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/cp/ChangeLog
gcc/cp/decl.c
gcc/cp/decl2.c
gcc/cp/parse.y
gcc/cp/typeck.c

index 93af15d..f5f47c6 100644 (file)
@@ -1,3 +1,19 @@
+Thu May 11 00:31:48 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
+
+       * typeck.c (default_conversion): Don't check for BLKmode before
+       pulling out the decl_constant_value.
+
+       * decl.c (start_function): Clear named_labels and shadowed_labels.
+
+       * typeck.c (build_function_call_real): Also synthesize methods here.
+
+Wed May 10 00:55:59 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
+
+       * decl2.c (finish_file): Synthesize exported methods before the
+       reconsider loop.
+
+       * parse.y: Move declaration of flag_new_for_scope to file scope.
+
 Tue May  9 19:10:33 1995  Mike Stump  <mrs@cygnus.com>
 
        * decl2.c: Add flag_new_for_scope for new -ffor-scope flag.
index 2471c15..dc78309 100644 (file)
@@ -10716,6 +10716,8 @@ start_function (declspecs, declarator, raises, pre_parsed_p)
   current_function_returns_value = 0;
   current_function_returns_null = 0;
   warn_about_return_type = 0;
+  named_labels = 0;
+  shadowed_labels = 0;
   current_function_assigns_this = 0;
   current_function_just_assigned_this = 0;
   current_function_parms_stored = 0;
index 5909f87..cb326c8 100644 (file)
@@ -3112,7 +3112,13 @@ finish_file ()
     walk_sigtables ((void (*)())0, finish_sigtable_vardecl);
 
   for (fnname = saved_inlines; fnname; fnname = TREE_CHAIN (fnname))
-    import_export_inline (TREE_VALUE (fnname));
+    {
+      tree decl = TREE_VALUE (fnname);
+      import_export_inline (decl);
+      if (DECL_ARTIFICIAL (decl) && ! DECL_INITIAL (decl)
+         && TREE_PUBLIC (decl) && DECL_NOT_REALLY_EXTERN (decl))
+       synthesize_method (decl);
+    }
 
   /* Now write out inline functions which had their addresses taken and
      which were not declared virtual and which were not declared `extern
@@ -3144,8 +3150,7 @@ finish_file ()
 
            if (DECL_ARTIFICIAL (decl) && ! DECL_INITIAL (decl))
              {
-               if (TREE_USED (decl)
-                   || (TREE_PUBLIC (decl) && DECL_NOT_REALLY_EXTERN (decl)))
+               if (TREE_USED (decl))
                  {
                    synthesize_method (decl);
                    if (TREE_ASM_WRITTEN (decl))
index b66c32a..7b5fae4 100644 (file)
@@ -54,6 +54,7 @@ extern int errno;
 
 extern int end_of_file;
 extern int current_class_depth;
+extern int flag_new_for_scope;
 
 void yyerror ();
 
@@ -3225,8 +3226,7 @@ simple_stmt:
                  clear_momentary ();
                  finish_stmt (); }
        | FOR
-               { extern int flag_new_for_scope;
-                 emit_line_note (input_filename, lineno);
+               { emit_line_note (input_filename, lineno);
                  if (flag_new_for_scope)
                    {
                      /* Conditionalize .pushlevel */
index 0bede44..2927c32 100644 (file)
@@ -1363,7 +1363,7 @@ default_conversion (exp)
   if (TREE_CODE (exp) == CONST_DECL)
     exp = DECL_INITIAL (exp);
   /* Replace a nonvolatile const static variable with its value.  */
-  else if (TREE_READONLY_DECL_P (exp) && DECL_MODE (exp) != BLKmode)
+  else if (TREE_READONLY_DECL_P (exp))
     {
       exp = decl_constant_value (exp);
       type = TREE_TYPE (exp);
@@ -2373,6 +2373,13 @@ build_function_call_real (function, params, require_complete, flags)
 
       if (DECL_INLINE (function))
        {
+         /* Is it a synthesized method that needs to be synthesized?  */
+         if (DECL_ARTIFICIAL (function) && ! flag_no_inline
+             && ! DECL_INITIAL (function)
+             /* Kludge: don't synthesize for default args.  */
+             && current_function_decl)
+           synthesize_method (function);
+
          fntype = build_type_variant (TREE_TYPE (function),
                                       TREE_READONLY (function),
                                       TREE_THIS_VOLATILE (function));