print-rtl: Fix printing of CONST_STRING in DEBUG_INSNs [PR93399]
authorJakub Jelinek <jakub@redhat.com>
Thu, 5 Mar 2020 08:12:44 +0000 (09:12 +0100)
committerJakub Jelinek <jakub@redhat.com>
Thu, 5 Mar 2020 08:12:44 +0000 (09:12 +0100)
commitfebfe87d80c5bc8afd9038136ae7c09910a0d883
tree566935b3278662e79e7f1734be2771b92e29f48b
parentc9f90a25d4945e904839326957c7c4d34abd88dd
print-rtl: Fix printing of CONST_STRING in DEBUG_INSNs [PR93399]

The following testcase fails to assemble, as CONST_STRING in the DEBUG_INSNs
is printed as is, so if it contains \n and/or \r, we are in trouble:
        .loc 1 14 3
        # DEBUG haystack => [si]
        # DEBUG needle => "
"
In the gimple dumps we print those (STRING_CSTs) as
  # DEBUG haystack => D#1
  # DEBUG needle => "\n"
so this patch uses what we use in tree printing for the CONST_STRINGs too.

2020-03-05  Jakub Jelinek  <jakub@redhat.com>

PR middle-end/93399
* tree-pretty-print.h (pretty_print_string): Declare.
* tree-pretty-print.c (pretty_print_string): Remove forward
declaration, no longer static.  Change nbytes parameter type
from unsigned to size_t.
* print-rtl.c (print_value) <case CONST_STRING>: Use
pretty_print_string and for shrink way too long strings.

* gcc.dg/pr93399.c: New test.
gcc/ChangeLog
gcc/print-rtl.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/pr93399.c [new file with mode: 0644]
gcc/tree-pretty-print.c
gcc/tree-pretty-print.h