This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[PATCH 01/22] Change of location_get_source_line signature
- From: David Malcolm <dmalcolm at redhat dot com>
- To: gcc-patches at gcc dot gnu dot org
- Cc: David Malcolm <dmalcolm at redhat dot com>
- Date: Thu, 10 Sep 2015 16:28:12 -0400
- Subject: [PATCH 01/22] Change of location_get_source_line signature
- Authentication-results: sourceware.org; auth=none
- References: <1441916913-11547-1-git-send-email-dmalcolm at redhat dot com>
location_get_source_line takes an expanded_location, but the column
is irrelevant; it just needs a filename and line number.
This change is used by, but independent of, the new implementation of
diagnostic_show_locus later in the kit, so am breaking this out early.
gcc/ChangeLog:
* input.h (location_get_source_line): Drop "expanded_location"
param in favor of a file and line number.
* input.c (location_get_source_line): Likewise.
(dump_location_info): Update for change in signature of
location_get_source_line.
* diagnostic.c (diagnostic_print_caret_line): Likewise.
gcc/c-family/ChangeLog:
* c-format.c (location_from_offset): Update for change in
signature of location_get_source_line.
* c-indentation.c (get_visual_column): Likewise.
(line_contains_hash_if): Likewise.
---
gcc/c-family/c-format.c | 2 +-
gcc/c-family/c-indentation.c | 10 +++-------
gcc/diagnostic.c | 3 ++-
gcc/input.c | 14 ++++++++------
gcc/input.h | 2 +-
5 files changed, 15 insertions(+), 16 deletions(-)
diff --git a/gcc/c-family/c-format.c b/gcc/c-family/c-format.c
index 2940f92..ab58076 100644
--- a/gcc/c-family/c-format.c
+++ b/gcc/c-family/c-format.c
@@ -132,7 +132,7 @@ location_from_offset (location_t loc, int offset)
expanded_location s = expand_location_to_spelling_point (loc);
int line_width;
- const char *line = location_get_source_line (s, &line_width);
+ const char *line = location_get_source_line (s.file, s.line, &line_width);
if (line == NULL)
return loc;
line += s.column - 1 ;
diff --git a/gcc/c-family/c-indentation.c b/gcc/c-family/c-indentation.c
index fdfe0a9..dd35223 100644
--- a/gcc/c-family/c-indentation.c
+++ b/gcc/c-family/c-indentation.c
@@ -45,7 +45,8 @@ get_visual_column (expanded_location exploc,
unsigned int *first_nws = NULL)
{
int line_len;
- const char *line = location_get_source_line (exploc, &line_len);
+ const char *line = location_get_source_line (exploc.file, exploc.line,
+ &line_len);
if (!line)
return false;
unsigned int vis_column = 0;
@@ -84,13 +85,8 @@ get_visual_column (expanded_location exploc,
static bool
line_contains_hash_if (const char *file, int line_num)
{
- expanded_location exploc;
- exploc.file = file;
- exploc.line = line_num;
- exploc.column = 1;
-
int line_len;
- const char *line = location_get_source_line (exploc, &line_len);
+ const char *line = location_get_source_line (file, line_num, &line_len);
if (!line)
return false;
diff --git a/gcc/diagnostic.c b/gcc/diagnostic.c
index 01a8e35..74a40bb 100644
--- a/gcc/diagnostic.c
+++ b/gcc/diagnostic.c
@@ -378,7 +378,8 @@ diagnostic_print_caret_line (diagnostic_context * context,
int cmax = MAX (xloc1.column, xloc2.column);
int line_width;
- const char *line = location_get_source_line (xloc1, &line_width);
+ const char *line = location_get_source_line (xloc1.file, xloc1.line,
+ &line_width);
if (line == NULL || cmax > line_width)
return;
diff --git a/gcc/input.c b/gcc/input.c
index 59cab5c..e7302a4 100644
--- a/gcc/input.c
+++ b/gcc/input.c
@@ -684,27 +684,27 @@ read_line_num (fcache *c, size_t line_num,
return read_next_line (c, line, line_len);
}
-/* Return the physical source line that corresponds to xloc in a
+/* Return the physical source line that corresponds to FILE_PATH/LINE in a
buffer that is statically allocated. The newline is replaced by
the null character. Note that the line can contain several null
characters, so LINE_LEN, if non-null, points to the actual length
of the line. */
const char *
-location_get_source_line (expanded_location xloc,
+location_get_source_line (const char *file_path, int line,
int *line_len)
{
static char *buffer;
static ssize_t len;
- if (xloc.line == 0)
+ if (line == 0)
return NULL;
- fcache *c = lookup_or_add_file_to_cache_tab (xloc.file);
+ fcache *c = lookup_or_add_file_to_cache_tab (file_path);
if (c == NULL)
return NULL;
- bool read = read_line_num (c, xloc.line, &buffer, &len);
+ bool read = read_line_num (c, line, &buffer, &len);
if (read && line_len)
*line_len = len;
@@ -971,7 +971,9 @@ dump_location_info (FILE *stream)
/* Beginning of a new source line: draw the line. */
int line_size;
- const char *line_text = location_get_source_line (exploc, &line_size);
+ const char *line_text = location_get_source_line (exploc.file,
+ exploc.line,
+ &line_size);
if (!line_text)
break;
fprintf (stream,
diff --git a/gcc/input.h b/gcc/input.h
index 5ba4d3b..07d8544 100644
--- a/gcc/input.h
+++ b/gcc/input.h
@@ -38,7 +38,7 @@ extern char builtins_location_check[(BUILTINS_LOCATION
extern bool is_location_from_builtin_token (source_location);
extern expanded_location expand_location (source_location);
-extern const char *location_get_source_line (expanded_location xloc,
+extern const char *location_get_source_line (const char *file_path, int line,
int *line_size);
extern expanded_location expand_location_to_spelling_point (source_location);
extern source_location expansion_point_location_if_in_system_header (source_location);
--
1.8.5.3