aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/fortran/ChangeLog7
-rw-r--r--gcc/fortran/scanner.c14
-rw-r--r--gcc/testsuite/ChangeLog4
-rw-r--r--libcpp/ChangeLog5
-rw-r--r--libcpp/line-map.c3
5 files changed, 29 insertions, 4 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index c645b6f..95605b7 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,10 @@
+2014-12-05 Manuel López-Ibáñez <manu@gcc.gnu.org>
+
+ * scanner.c (gfc_next_char_literal): Use gfc_warning_now.
+ (load_file): Use the line length as the column hint for
+ linemap_line_start. Reserve a location for the highest column of
+ the line.
+
2014-12-03 Manuel López-Ibáñez <manu@gcc.gnu.org>
PR fortran/44054
diff --git a/gcc/fortran/scanner.c b/gcc/fortran/scanner.c
index 0de0998..718c323 100644
--- a/gcc/fortran/scanner.c
+++ b/gcc/fortran/scanner.c
@@ -1056,7 +1056,8 @@ restart:
gfc_current_locus.lb->truncated = 0;
gfc_current_locus.nextc = gfc_current_locus.lb->line + maxlen;
- gfc_warning_now_1 ("Line truncated at %L", &gfc_current_locus);
+ gfc_warning_now (OPT_Wline_truncation,
+ "Line truncated at %L", &gfc_current_locus);
gfc_current_locus.nextc = current_nextc;
}
@@ -1195,7 +1196,8 @@ restart:
&& gfc_current_locus.lb->truncated)
{
gfc_current_locus.lb->truncated = 0;
- gfc_warning_now_1 ("Line truncated at %L", &gfc_current_locus);
+ gfc_warning_now (OPT_Wline_truncation,
+ "Line truncated at %L", &gfc_current_locus);
}
prev_openmp_flag = openmp_flag;
@@ -2044,7 +2046,13 @@ load_file (const char *realfilename, const char *displayedname, bool initial)
+ (len + 1) * sizeof (gfc_char_t));
b->location
- = linemap_line_start (line_table, current_file->line++, 120);
+ = linemap_line_start (line_table, current_file->line++, len);
+ /* ??? We add the location for the maximum column possible here,
+ because otherwise if the next call creates a new line-map, it
+ will not reserve space for any offset. */
+ if (len > 0)
+ linemap_position_for_column (line_table, len);
+
b->file = current_file;
b->truncated = trunc;
wide_strcpy (b->line, line);
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 295a810..29802cd 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,7 @@
+2014-12-05 Manuel López-Ibáñez <manu@gcc.gnu.org>
+
+ * gfortran.dg/line_length_5.f90: New test.
+
2014-12-04 Sriraman Tallam <tmsriram@google.com>
H.J. Lu <hongjiu.lu@intel.com>
diff --git a/libcpp/ChangeLog b/libcpp/ChangeLog
index afb0f79..e26c8c9 100644
--- a/libcpp/ChangeLog
+++ b/libcpp/ChangeLog
@@ -1,3 +1,8 @@
+2014-12-05 Manuel López-Ibáñez <manu@gcc.gnu.org>
+
+ * line-map.c (linemap_position_for_loc_and_offset): Add new
+ linemap_assert_fails.
+
2014-12-02 Manuel López-Ibáñez <manu@gcc.gnu.org>
* include/line-map.h (linemap_assert_fails): Declare.
diff --git a/libcpp/line-map.c b/libcpp/line-map.c
index 6a695ab..6675634 100644
--- a/libcpp/line-map.c
+++ b/libcpp/line-map.c
@@ -678,7 +678,8 @@ linemap_position_for_loc_and_offset (struct line_maps *set,
linemap_position_for_line_and_column (map,
SOURCE_LINE (map, loc),
offset);
- if (linemap_assert_fails (map == linemap_lookup (set, r)))
+ if (linemap_assert_fails (r <= set->highest_location)
+ || linemap_assert_fails (map == linemap_lookup (set, r)))
return loc;
return r;