aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJason Merrill <jason@yorick.cygnus.com>1997-08-26 01:34:48 +0000
committerJason Merrill <jason@gcc.gnu.org>1997-08-25 21:34:48 -0400
commit818045b6d8b8fad3b60cbd602499025cb9206d19 (patch)
tree0c94c8d16ac626da18238f852f028d81395006da /gcc
parent3e68fa831129e7717a961aeda8358e62d3d467e9 (diff)
downloadgcc-818045b6d8b8fad3b60cbd602499025cb9206d19.zip
gcc-818045b6d8b8fad3b60cbd602499025cb9206d19.tar.gz
gcc-818045b6d8b8fad3b60cbd602499025cb9206d19.tar.bz2
input.c (sub_getch): Eventually give up and release the input file.
* 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
Diffstat (limited to 'gcc')
-rw-r--r--gcc/cp/ChangeLog5
-rw-r--r--gcc/cp/decl.c9
-rw-r--r--gcc/cp/input.c8
3 files changed, 19 insertions, 3 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 7cd6bed..f136f0c 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -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>
diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c
index fff54e6..1f755cc 100644
--- a/gcc/cp/decl.c
+++ b/gcc/cp/decl.c
@@ -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;
diff --git a/gcc/cp/input.c b/gcc/cp/input.c
index e884ed2..cb9dfa8 100644
--- a/gcc/cp/input.c
+++ b/gcc/cp/input.c
@@ -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++];
}