+2017-01-07 David Malcolm <dmalcolm@redhat.com>
+
+ PR c++/72803
+ * input.c (selftest::test_accessing_ordinary_linemaps): Verify
+ that the transition from a max line width >= 1<<10 to narrower
+ lines works correctly.
+
2017-01-07 Alexandre Oliva <aoliva@redhat.com>
* doc/options.texi (PerFunction): New.
linemap_line_start (line_table, 3, 2000);
location_t loc_e = linemap_position_for_column (line_table, 700);
+ /* Transitioning back to a short line. */
+ linemap_line_start (line_table, 4, 0);
+ location_t loc_back_to_short = linemap_position_for_column (line_table, 100);
+
+ if (should_have_column_data_p (loc_back_to_short))
+ {
+ /* Verify that we switched to short lines in the linemap. */
+ line_map_ordinary *map = LINEMAPS_LAST_ORDINARY_MAP (line_table);
+ ASSERT_EQ (7, map->m_column_and_range_bits - map->m_range_bits);
+ }
+
linemap_add (line_table, LC_LEAVE, false, NULL, 0);
/* Multiple files. */
assert_loceq ("foo.c", 2, 1, loc_c);
assert_loceq ("foo.c", 2, 17, loc_d);
assert_loceq ("foo.c", 3, 700, loc_e);
+ assert_loceq ("foo.c", 4, 100, loc_back_to_short);
assert_loceq ("bar.c", 1, 150, loc_f);
ASSERT_FALSE (is_location_from_builtin_token (loc_a));
+2017-01-07 David Malcolm <dmalcolm@redhat.com>
+
+ PR c++/72803
+ * g++.dg/diagnostic/pr72803.C: New test case.
+
2017-01-07 Martin Sebor <msebor@redhat.com>
* gcc.dg/attr-alloc_size-3.c: Remove regex made redundant by r243461.
--- /dev/null
+/* Long line, with a close brace at column 511, hence with the insertion
+ point for the missing semicolon at column 512. */
+class test { }
+# 1 "" 1
+// The line directive appears to be necessary to trigger the ICE
+// { dg-error "style of line directive is a GCC extension" "" { target *-*-* } .-2 }
+
+/* Verify that we get the correct line and column for the diagnostic. */
+// { dg-error "512: expected .;. after class definition" "" { target *-*-* } 3 }
+2017-01-07 David Malcolm <dmalcolm@redhat.com>
+
+ PR c++/72803
+ * line-map.c (linemap_line_start): When determining if the highest
+ column given out so far will fit into a proposed change to the
+ current map, use the effective number of column bits, rather than
+ the total number of column + range bits.
+
2017-01-01 Jakub Jelinek <jakub@redhat.com>
Update copyright years.
single line we can sometimes just increase its column_bits instead. */
if (line_delta < 0
|| last_line != ORDINARY_MAP_STARTING_LINE_NUMBER (map)
- || SOURCE_COLUMN (map, highest) >= (1U << column_bits)
+ || SOURCE_COLUMN (map, highest) >= (1U << (column_bits - range_bits))
|| range_bits < map->m_range_bits)
map = linemap_check_ordinary
(const_cast <line_map *>