input.c (feed_input): Add file, line parms.
authorJason Merrill <jason@yorick.cygnus.com>
Mon, 26 Jul 1999 22:24:00 +0000 (22:24 +0000)
committerJason Merrill <jason@gcc.gnu.org>
Mon, 26 Jul 1999 22:24:00 +0000 (18:24 -0400)
* input.c (feed_input): Add file, line parms.
* lex.c (begin_definition_of_inclass_inline, feed_defarg): Adjust.
(real_yylex): Check linemode before input_redirected().

* typeck.c (c_expand_return): Downgrade pedwarn about returning NULL
from op new to warning.

From-SVN: r28276

gcc/cp/ChangeLog
gcc/cp/input.c
gcc/cp/lex.c
gcc/cp/typeck.c

index 3e836d84ec8e1a2b3b1ab40afaeb8e0b3acae9d2..afa0b86e8acc769ecdcc9782d93e00ec2b83a0ca 100644 (file)
@@ -1,3 +1,12 @@
+1999-07-26  Jason Merrill  <jason@yorick.cygnus.com>
+
+       * input.c (feed_input): Add file, line parms.
+       * lex.c (begin_definition_of_inclass_inline, feed_defarg): Adjust.
+       (real_yylex): Check linemode before input_redirected().
+
+       * typeck.c (c_expand_return): Downgrade pedwarn about returning NULL
+       from op new to warning.
+
 1999-07-26  Mark Mitchell  <mark@codesourcery.com>
 
        * cp-tree.h (ncp_convert): Rename to perform_implicit_conversion.
index 5feb1fd17e7a4c84415502976d27f7dd024fba47..12ad47ba52100bd145a60bea1fedc6a766168c4e 100644 (file)
@@ -69,7 +69,7 @@ extern unsigned char *yy_cur, *yy_lim;
 extern int yy_get_token ();
 #endif
 
-extern void feed_input PROTO((char *, int));
+extern void feed_input PROTO((char *, int, char *, int));
 extern void put_input PROTO((int));
 extern void put_back PROTO((int));
 extern int getch PROTO((void));
@@ -110,9 +110,11 @@ free_input (inp)
 
 inline
 void
-feed_input (str, len)
+feed_input (str, len, file, line)
      char *str;
      int len;
+     char *file;
+     int line;
 {
   struct input_source *inp = allocate_input ();
 
@@ -126,6 +128,9 @@ feed_input (str, len)
     my_friendly_abort (990710);
   cpp_push_buffer (&parse_in, str, len);
   CPP_BUFFER (&parse_in)->manual_pop = 1;
+  CPP_BUFFER (&parse_in)->nominal_fname
+    = CPP_BUFFER (&parse_in)->fname = file;
+  CPP_BUFFER (&parse_in)->lineno = line;
 #else
   inp->str = str;
   inp->length = len;
@@ -134,6 +139,8 @@ feed_input (str, len)
   putback.buffer = NULL;
   putback.buffer_size = 0;
   putback.index = -1;
+  lineno = line;
+  input_filename = file;
 #endif
   inp->next = input;
   inp->filename = input_filename;
index a2f2be54b6b7ac8497cc0baadb703a3d82c1f8de..d1d18a47f3762e4106bde58b094d9ecee58c56e6 100644 (file)
@@ -1266,9 +1266,7 @@ begin_definition_of_inclass_inline (pi)
   if (context)
     push_cp_function_context (context);
 
-  feed_input (pi->buf, pi->len);
-  lineno = pi->lineno;
-  input_filename = pi->filename;
+  feed_input (pi->buf, pi->len, pi->filename, pi->lineno);
   yychar = PRE_PARSED_FUNCTION_DECL;
   yylval.ttype = build_tree_list ((tree) pi, pi->fndecl);
   /* Pass back a handle to the rest of the inline functions, so that they
@@ -1878,12 +1876,20 @@ feed_defarg (f, p)
      tree f, p;
 {
   tree d = TREE_PURPOSE (p);
-  feed_input (DEFARG_POINTER (d), DEFARG_LENGTH (d));
+  char *file;
+  int line;
   if (TREE_CODE (f) == FUNCTION_DECL)
     {
-      lineno = DECL_SOURCE_LINE (f);
-      input_filename = DECL_SOURCE_FILE (f);
+      line = DECL_SOURCE_LINE (f);
+      file = DECL_SOURCE_FILE (f);
     }
+  else
+    {
+      line = lineno;
+      file = input_filename;
+    }
+
+  feed_input (DEFARG_POINTER (d), DEFARG_LENGTH (d), file, line);
   yychar = DEFARG_MARKER;
   yylval.ttype = p;
 }
@@ -3557,10 +3563,10 @@ real_yylex ()
     case EOF:
       end_of_file = 1;
       token_buffer[0] = 0;
-      if (input_redirected ())
-       value = END_OF_SAVED_INPUT;
-      else if (linemode)
+      if (linemode)
        value = END_OF_LINE;
+      else if (input_redirected ())
+       value = END_OF_SAVED_INPUT;
       else
        value = ENDFILE;
       break;
index 506fa9c1217e637eba1521bddfdace0005c222b3..64a6dadee12eaef9e4c69fca76799e409de43827 100644 (file)
@@ -6757,7 +6757,7 @@ c_expand_return (retval)
        || DECL_NAME (current_function_decl) == ansi_opname[(int) VEC_NEW_EXPR])
       && !TYPE_NOTHROW_P (TREE_TYPE (current_function_decl))
       && null_ptr_cst_p (retval))
-    cp_pedwarn ("operator new should throw an exception, not return NULL");
+    cp_warning ("operator new should throw an exception, not return NULL");
   
   if (retval == NULL_TREE)
     {