diff options
author | dmalcolm <dmalcolm@138bc75d-0d04-0410-961f-82ee72b054a4> | 2016-10-26 16:51:53 +0000 |
---|---|---|
committer | dmalcolm <dmalcolm@138bc75d-0d04-0410-961f-82ee72b054a4> | 2016-10-26 16:51:53 +0000 |
commit | cd913c1331beecf551c26a4c2c431cf4f3f57c21 (patch) | |
tree | 0586bc9cd9225510a43cb652d3705d953a3cf226 /gcc/print-rtl.h | |
parent | edee088c3ac86a4334a389f41470bd06bbd0f410 (diff) | |
download | gcc-cd913c1331beecf551c26a4c2c431cf4f3f57c21.tar.gz |
Introduce class rtx_writer
gcc/ChangeLog:
* print-rtl-function.c (print_rtx_function): Rewrite in terms of
class rtx_writer.
* print-rtl.c (outfile): Delete global.
(sawclose): Likewise.
(indent): Likewise.
(in_call_function_usage): Likewise.
(flag_compact): Likewise.
(flag_simple): Likewise.
(rtx_writer::rtx_writer): New ctor.
(print_rtx_operand_code_0): Convert to...
(rtx_writer::print_rtx_operand_code_0): ...this.
(print_rtx_operand_code_e): Convert to...
(rtx_writer::print_rtx_operand_code_e): ...this.
(print_rtx_operand_codes_E_and_V): Convert to...
(rtx_writer::print_rtx_operand_codes_E_and_V): ...this.
(print_rtx_operand_code_i): Convert to...
(rtx_writer::print_rtx_operand_code_i): ...this.
(print_rtx_operand_code_r): Convert to...
(rtx_writer::print_rtx_operand_code_r): ...this.
(print_rtx_operand_code_u): Convert to...
(rtx_writer::print_rtx_operand_code_u): ...this.
(print_rtx_operand): Convert to...
(rtx_writer::print_rtx_operand): ...this.
(print_rtx): Convert to...
(rtx_writer::print_rtx): ...this.
(print_inline_rtx): Rewrite in terms of class rtx_writer.
(debug_rtx): Likewise.
(print_rtl): Convert to...
(rtx_writer::print_rtl): ...this.
(print_rtl): Reimplement in terms of class rtx_writer.
(print_rtl_single): Rewrite in terms of class rtx_writer.
(print_rtl_single_with_indent): Convert to..
(rtx_writer::print_rtl_single_with_indent): ...this.
(print_simple_rtl): Rewrite in terms of class rtx_writer.
* print-rtl.h (flag_compact): Delete decl.
(class rtx_writer): New class.
* rtl-tests.c (selftest::assert_rtl_dump_eq): Rewrite in terms of
class rtx_writer.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@241586 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/print-rtl.h')
-rw-r--r-- | gcc/print-rtl.h | 39 |
1 files changed, 38 insertions, 1 deletions
diff --git a/gcc/print-rtl.h b/gcc/print-rtl.h index 8dfba8b46ef..4ebfcf99b03 100644 --- a/gcc/print-rtl.h +++ b/gcc/print-rtl.h @@ -20,7 +20,44 @@ along with GCC; see the file COPYING3. If not see #ifndef GCC_PRINT_RTL_H #define GCC_PRINT_RTL_H -extern bool flag_compact; +/* A class for writing rtx to a FILE *. */ + +class rtx_writer +{ + public: + rtx_writer (FILE *outfile, int ind, bool simple, bool compact); + + void print_rtx (const_rtx in_rtx); + void print_rtl (const_rtx rtx_first); + int print_rtl_single_with_indent (const_rtx x, int ind); + + private: + void print_rtx_operand_code_0 (const_rtx in_rtx, int idx); + void print_rtx_operand_code_e (const_rtx in_rtx, int idx); + void print_rtx_operand_codes_E_and_V (const_rtx in_rtx, int idx); + void print_rtx_operand_code_i (const_rtx in_rtx, int idx); + void print_rtx_operand_code_r (const_rtx in_rtx); + void print_rtx_operand_code_u (const_rtx in_rtx, int idx); + void print_rtx_operand (const_rtx in_rtx, int idx); + + private: + FILE *m_outfile; + int m_sawclose; + int m_indent; + bool m_in_call_function_usage; + + /* True means use simplified format without flags, modes, etc. */ + bool m_simple; + + /* If true, use compact dump format: + - INSN_UIDs are omitted, except for jumps and CODE_LABELs, + - INSN_CODEs are omitted, + - register numbers are omitted for hard and virtual regs, and + non-virtual pseudos are offset relative to the first such reg, and + printed with a '%' sigil e.g. "%0" for (LAST_VIRTUAL_REGISTER + 1), + - insn names are prefixed with "c" (e.g. "cinsn", "cnote", etc). */ + bool m_compact; +}; #ifdef BUFSIZ extern void print_rtl (FILE *, const_rtx); |