diff options
author | Jakub Jelinek <jakub@redhat.com> | 2020-03-05 09:12:44 +0100 |
---|---|---|
committer | Jakub Jelinek <jakub@redhat.com> | 2020-03-05 09:12:44 +0100 |
commit | febfe87d80c5bc8afd9038136ae7c09910a0d883 (patch) | |
tree | 566935b3278662e79e7f1734be2771b92e29f48b /gcc/print-rtl.c | |
parent | c9f90a25d4945e904839326957c7c4d34abd88dd (diff) | |
download | gcc-febfe87d80c5bc8afd9038136ae7c09910a0d883.zip gcc-febfe87d80c5bc8afd9038136ae7c09910a0d883.tar.gz gcc-febfe87d80c5bc8afd9038136ae7c09910a0d883.tar.bz2 |
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.
Diffstat (limited to 'gcc/print-rtl.c')
-rw-r--r-- | gcc/print-rtl.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/gcc/print-rtl.c b/gcc/print-rtl.c index 653e9c6..611ea07 100644 --- a/gcc/print-rtl.c +++ b/gcc/print-rtl.c @@ -1685,7 +1685,9 @@ print_value (pretty_printer *pp, const_rtx x, int verbose) pp_string (pp, tmp); break; case CONST_STRING: - pp_printf (pp, "\"%s\"", XSTR (x, 0)); + pp_string (pp, "\""); + pretty_print_string (pp, XSTR (x, 0), strlen (XSTR (x, 0))); + pp_string (pp, "\""); break; case SYMBOL_REF: pp_printf (pp, "`%s'", XSTR (x, 0)); |