diff options
Diffstat (limited to 'gcc/value-range.cc')
-rw-r--r-- | gcc/value-range.cc | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/gcc/value-range.cc b/gcc/value-range.cc index 391cef6..f507ec5 100644 --- a/gcc/value-range.cc +++ b/gcc/value-range.cc @@ -245,17 +245,23 @@ vrange::dump (FILE *file) const void irange_bitmask::dump (FILE *file) const { - char buf[WIDE_INT_PRINT_BUFFER_SIZE]; + char buf[WIDE_INT_PRINT_BUFFER_SIZE], *p; pretty_printer buffer; pp_needs_newline (&buffer) = true; buffer.buffer->stream = file; pp_string (&buffer, "MASK "); - print_hex (m_mask, buf); - pp_string (&buffer, buf); + unsigned len_mask, len_val; + if (print_hex_buf_size (m_mask, &len_mask) + | print_hex_buf_size (m_value, &len_val)) + p = XALLOCAVEC (char, MAX (len_mask, len_val)); + else + p = buf; + print_hex (m_mask, p); + pp_string (&buffer, p); pp_string (&buffer, " VALUE "); - print_hex (m_value, buf); - pp_string (&buffer, buf); + print_hex (m_value, p); + pp_string (&buffer, p); pp_flush (&buffer); } |