This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH 01/22] Change of location_get_source_line signature


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]