https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77672

--- Comment #3 from David Malcolm <dmalcolm at gcc dot gnu.org> ---
Author: dmalcolm
Date: Fri Sep 23 14:14:52 2016
New Revision: 240434

URL: https://gcc.gnu.org/viewcvs?rev=240434&root=gcc&view=rev
Log:
Provide location information for terminator characters (PR preprocessor/77672)

substring_loc::get_location currently fails for the final terminator
character in a STRING_CST from the C frontend, so that format_warning_va
falls back to using the location of the string as a whole.

This patch tweaks things [1] so that we use the final closing quote
as the location of the terminator character, as requested in
PR preprocessor/77672.

[1] specifically, cpp_interpret_string_1.

gcc/ChangeLog:
        PR preprocessor/77672
        * input.c (selftest::test_lexer_string_locations_simple): Update
        test to expect location information of the terminator character
        at the location of the final closing quote.
        (selftest::test_lexer_string_locations_hex): Likewise.
        (selftest::test_lexer_string_locations_oct): Likewise.
        (selftest::test_lexer_string_locations_letter_escape_1): Likewise.
        (selftest::test_lexer_string_locations_letter_escape_2): Likewise.
        (selftest::test_lexer_string_locations_ucn4): Likewise.
        (selftest::test_lexer_string_locations_ucn8): Likewise.
        (selftest::test_lexer_string_locations_u8): Likewise.
        (selftest::test_lexer_string_locations_utf8_source): Likewise.
        (selftest::test_lexer_string_locations_concatenation_1): Likewise.
        (selftest::test_lexer_string_locations_concatenation_2): Likewise.
        (selftest::test_lexer_string_locations_concatenation_3): Likewise.
        (selftest::test_lexer_string_locations_macro): Likewise.
        (selftest::test_lexer_string_locations_long_line): Likewise.

gcc/testsuite/ChangeLog:
        PR preprocessor/77672
        * gcc.dg/plugin/diagnostic-test-string-literals-1.c
        (test_terminator_location): New function.

libcpp/ChangeLog:
        PR preprocessor/77672
        * charset.c (cpp_interpret_string_1): Add a source_range for the
        NUL-terminator, using the location of the trailing quote of the
        final string.


Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/input.c
    trunk/gcc/testsuite/ChangeLog
    trunk/gcc/testsuite/gcc.dg/plugin/diagnostic-test-string-literals-1.c
    trunk/libcpp/ChangeLog
    trunk/libcpp/charset.c

Reply via email to