aboutsummaryrefslogtreecommitdiff
path: root/gcc/read-md.c
diff options
context:
space:
mode:
authorRichard Sandiford <richard.sandiford@arm.com>2019-07-16 08:41:13 +0000
committerRichard Sandiford <rsandifo@gcc.gnu.org>2019-07-16 08:41:13 +0000
commit737eb76789cd454918a85983255a1f62efcbfdc9 (patch)
tree773f9d2b59bf22303b127b0ea01775a5f7e4e344 /gcc/read-md.c
parentf6e5e4b83b153d056b93048fd23b4afebcd49bcf (diff)
downloadgcc-737eb76789cd454918a85983255a1f62efcbfdc9.zip
gcc-737eb76789cd454918a85983255a1f62efcbfdc9.tar.gz
gcc-737eb76789cd454918a85983255a1f62efcbfdc9.tar.bz2
Use file_location for md_reader's ptr_loc
Also make it public, so that clients can use the location for error reporting. 2019-07-16 Richard Sandiford <richard.sandiford@arm.com> gcc/ * read-md.h (md_reader::ptr_loc): Moved from read-md.c. Use file_location instead of separate fields. (md_reader::set_md_ptr_loc): Take a file_location instead of a separate filename and line number. * read-md.c (ptr_loc): As above. (md_reader::copy_md_ptr_loc): Update for new ptr_loc layout. (md_reader::fprint_md_ptr_loc): Likewise. (md_reader::set_md_ptr_loc): Likewise. Take a file_location instead of a separate filename and line number. (md_reader::read_string): Update call accordingly. From-SVN: r273510
Diffstat (limited to 'gcc/read-md.c')
-rw-r--r--gcc/read-md.c27
1 files changed, 9 insertions, 18 deletions
diff --git a/gcc/read-md.c b/gcc/read-md.c
index 8247640..d9a27ac 100644
--- a/gcc/read-md.c
+++ b/gcc/read-md.c
@@ -43,14 +43,6 @@ int have_error = 0;
#endif /* #ifndef GENERATOR_FILE */
-/* Associates PTR (which can be a string, etc.) with the file location
- specified by FILENAME and LINENO. */
-struct ptr_loc {
- const void *ptr;
- const char *filename;
- int lineno;
-};
-
/* This callback will be invoked whenever an md include directive is
processed. To be used for creation of the dependency file. */
void (*include_callback) (const char *);
@@ -94,25 +86,24 @@ leading_ptr_eq_p (const void *def1, const void *def2)
return *(const void *const *) def1 == *(const void *const *) def2;
}
-/* Associate PTR with the file position given by FILENAME and LINENO. */
+/* Associate PTR with the file position given by FILE_LOC. */
void
-md_reader::set_md_ptr_loc (const void *ptr, const char *filename, int lineno)
+md_reader::set_md_ptr_loc (const void *ptr, file_location file_loc)
{
struct ptr_loc *loc;
loc = (struct ptr_loc *) obstack_alloc (&m_ptr_loc_obstack,
sizeof (struct ptr_loc));
loc->ptr = ptr;
- loc->filename = filename;
- loc->lineno = lineno;
+ loc->loc = file_loc;
*htab_find_slot (m_ptr_locs, loc, INSERT) = loc;
}
/* Return the position associated with pointer PTR. Return null if no
position was set. */
-const struct ptr_loc *
+const md_reader::ptr_loc *
md_reader::get_md_ptr_loc (const void *ptr)
{
return (const struct ptr_loc *) htab_find (m_ptr_locs, &ptr);
@@ -125,7 +116,7 @@ md_reader::copy_md_ptr_loc (const void *new_ptr, const void *old_ptr)
{
const struct ptr_loc *loc = get_md_ptr_loc (old_ptr);
if (loc != 0)
- set_md_ptr_loc (new_ptr, loc->filename, loc->lineno);
+ set_md_ptr_loc (new_ptr, loc->loc);
}
/* If PTR is associated with a known file position, print a #line
@@ -136,7 +127,7 @@ md_reader::fprint_md_ptr_loc (FILE *outf, const void *ptr)
{
const struct ptr_loc *loc = get_md_ptr_loc (ptr);
if (loc != 0)
- fprintf (outf, "#line %d \"%s\"\n", loc->lineno, loc->filename);
+ fprintf (outf, "#line %d \"%s\"\n", loc->loc.lineno, loc->loc.filename);
}
/* Special fprint_md_ptr_loc for writing to STDOUT. */
@@ -672,7 +663,7 @@ md_reader::read_string (int star_if_braced)
{
char *stringbuf;
int saw_paren = 0;
- int c, old_lineno;
+ int c;
c = read_skip_spaces ();
if (c == '(')
@@ -681,7 +672,7 @@ md_reader::read_string (int star_if_braced)
c = read_skip_spaces ();
}
- old_lineno = get_lineno ();
+ file_location loc = get_current_location ();
if (c == '"')
stringbuf = read_quoted_string ();
else if (c == '{')
@@ -704,7 +695,7 @@ md_reader::read_string (int star_if_braced)
if (saw_paren)
require_char_ws (')');
- set_md_ptr_loc (stringbuf, get_filename (), old_lineno);
+ set_md_ptr_loc (stringbuf, loc);
return stringbuf;
}