input.c (sub_getch): Eventually give up and release the input file.
authorJason Merrill <jason@yorick.cygnus.com>
Tue, 26 Aug 1997 01:34:48 +0000 (01:34 +0000)
committerJason Merrill <jason@gcc.gnu.org>
Tue, 26 Aug 1997 01:34:48 +0000 (21:34 -0400)
* input.c (sub_getch): Eventually give up and release the input file.

* decl.c (cp_finish_decl): If #p i/i, put inline statics in the
right place.

From-SVN: r14923

gcc/cp/ChangeLog
gcc/cp/decl.c
gcc/cp/input.c

index 7cd6bed..f136f0c 100644 (file)
@@ -1,5 +1,10 @@
 Mon Aug 25 14:30:02 1997  Jason Merrill  <jason@yorick.cygnus.com>
 
+       * input.c (sub_getch): Eventually give up and release the input file.
+
+       * decl.c (cp_finish_decl): If #p i/i, put inline statics in the
+       right place.
+
        * call.c (joust): Tweak message.
 
 Sat Aug 23 18:02:59 1997  Mark Mitchell  <mmitchell@usa.net>
index fff54e6..1f755cc 100644 (file)
@@ -6580,10 +6580,15 @@ cp_finish_decl (decl, init, asmspec_tree, need_pop, flags)
          && DECL_THIS_INLINE (current_function_decl)
          && DECL_PUBLIC (current_function_decl))
        {
+         if (DECL_INTERFACE_KNOWN (current_function_decl))
+           {
+             TREE_PUBLIC (decl) = 1;
+             DECL_EXTERNAL (decl) = DECL_EXTERNAL (current_function_decl);
+           }
          /* We can only do this if we can use common or weak, and we
             can't if it has been initialized and we don't support weak.  */
-         if (DECL_INITIAL (decl) == NULL_TREE
-             || DECL_INITIAL (decl) == error_mark_node)
+         else if (DECL_INITIAL (decl) == NULL_TREE
+                  || DECL_INITIAL (decl) == error_mark_node)
            {
              TREE_PUBLIC (decl) = 1;
              DECL_COMMON (decl) = 1;
index e884ed2..cb9dfa8 100644 (file)
@@ -158,7 +158,13 @@ sub_getch ()
       if (input->offset >= input->length)
        {
          my_friendly_assert (putback_char == -1, 223);
-         return EOF;
+         ++(input->offset);
+         if (input->offset - input->length < 64)
+           return EOF;
+
+         /* We must be stuck in an error-handling rule; give up.  */
+         end_input ();
+         return getch ();
        }
       return (unsigned char)input->str[input->offset++];
     }