aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJason Merrill <jason@yorick.cygnus.com>1999-07-26 22:24:00 +0000
committerJason Merrill <jason@gcc.gnu.org>1999-07-26 18:24:00 -0400
commit1946537baae0c1012b0ab5a58c4f514189d885f5 (patch)
treec7dd083b74db4d0b977db93bd2215af49543a9a6 /gcc
parente7f9deaeff2bb58c6dbe62e941828677b387a59e (diff)
downloadgcc-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
Diffstat (limited to 'gcc')
-rw-r--r--gcc/cp/ChangeLog9
-rw-r--r--gcc/cp/input.c11
-rw-r--r--gcc/cp/lex.c24
-rw-r--r--gcc/cp/typeck.c2
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)
{