diff options
author | Jason Merrill <jason@yorick.cygnus.com> | 1999-07-26 22:24:00 +0000 |
---|---|---|
committer | Jason Merrill <jason@gcc.gnu.org> | 1999-07-26 18:24:00 -0400 |
commit | 1946537baae0c1012b0ab5a58c4f514189d885f5 (patch) | |
tree | c7dd083b74db4d0b977db93bd2215af49543a9a6 | |
parent | e7f9deaeff2bb58c6dbe62e941828677b387a59e (diff) | |
download | gcc-1946537baae0c1012b0ab5a58c4f514189d885f5.zip gcc-1946537baae0c1012b0ab5a58c4f514189d885f5.tar.gz gcc-1946537baae0c1012b0ab5a58c4f514189d885f5.tar.bz2 |
input.c (feed_input): Add file, line parms.
* 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
-rw-r--r-- | gcc/cp/ChangeLog | 9 | ||||
-rw-r--r-- | gcc/cp/input.c | 11 | ||||
-rw-r--r-- | gcc/cp/lex.c | 24 | ||||
-rw-r--r-- | gcc/cp/typeck.c | 2 |
4 files changed, 34 insertions, 12 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 3e836d8..afa0b86 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -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. diff --git a/gcc/cp/input.c b/gcc/cp/input.c index 5feb1fd..12ad47b 100644 --- a/gcc/cp/input.c +++ b/gcc/cp/input.c @@ -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; diff --git a/gcc/cp/lex.c b/gcc/cp/lex.c index a2f2be5..d1d18a4 100644 --- a/gcc/cp/lex.c +++ b/gcc/cp/lex.c @@ -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; diff --git a/gcc/cp/typeck.c b/gcc/cp/typeck.c index 506fa9c..64a6dad 100644 --- a/gcc/cp/typeck.c +++ b/gcc/cp/typeck.c @@ -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) { |