GCC Middle and Back End API Reference
sched-vis.c File Reference
#include "config.h"
#include "system.h"
#include "coretypes.h"
#include "tm.h"
#include "rtl.h"
#include "tree.h"
#include "basic-block.h"
#include "dumpfile.h"
#include "pretty-print.h"
Include dependency graph for sched-vis.c:

Functions

static void print_insn_with_notes (pretty_printer *, const_rtx)
static void print_exp ()
void print_value ()
void print_pattern ()
void print_insn ()
static void print_insn_with_notes ()
void dump_value_slim ()
void dump_insn_slim ()
void dump_rtl_slim (FILE *f, const_rtx first, const_rtx last, int count, int flags)
void rtl_dump_bb_for_graph ()
const char * str_pattern_slim ()
void debug_insn_slim (const_rtx)
DEBUG_FUNCTION void debug_insn_slim ()
void debug_rtl_slim (FILE *, const_rtx, const_rtx, int, int)
DEBUG_FUNCTION void debug_rtl_slim ()
void debug_bb_slim (basic_block)
DEBUG_FUNCTION void debug_bb_slim ()
void debug_bb_n_slim (int)
DEBUG_FUNCTION void debug_bb_n_slim ()

Function Documentation

void debug_bb_n_slim ( int  )
DEBUG_FUNCTION void debug_bb_n_slim ( )
void debug_bb_slim ( basic_block  )

Referenced by debug_insn_slim().

DEBUG_FUNCTION void debug_bb_slim ( )
void debug_insn_slim ( const_rtx  )

Emit a slim dump of X (an insn) to stderr.

DEBUG_FUNCTION void debug_insn_slim ( )

References BASIC_BLOCK, and debug_bb_slim().

void debug_rtl_slim ( FILE *  ,
const_rtx  ,
const_rtx  ,
int  ,
int   
)

Same as above, but using dump_rtl_slim.

DEBUG_FUNCTION void debug_rtl_slim ( )
void dump_insn_slim ( )

Emit a slim dump of X (an insn) to the file F, including any register note attached to the instruction.

References print_insn_with_notes().

void dump_rtl_slim ( FILE *  f,
const_rtx  first,
const_rtx  last,
int  count,
int  flags 
)

Same as above, but stop at LAST or when COUNT == 0. If COUNT < 0 it will stop only at LAST or NULL rtx.

References FOR_BB_INSNS, pp_bar, pp_write_text_as_dot_label_to_stream(), pp_write_text_to_stream(), and print_insn_with_notes().

Referenced by lra_get_insn_regs().

void dump_value_slim ( )

Print X, an RTL value node, to file F in slim format. Include additional information if VERBOSE is nonzero.

Value nodes are constants, registers, labels, symbols and memory.

static void print_exp ( )
static

This recognizes rtx'en classified as expressions. These are always represent some action on values or results of other expression, that may be stored in objects representing values.

       Most unhandled codes can be printed as pseudo-functions.   
         Give up, just print the RTX name.   
 Print this as a function?   

References NULL_RTX.

Referenced by print_value().

void print_insn ( )

This is the main function in slim rtl visualization mechanism.

X is an insn, to be printed into PP.

This function tries to print it properly in human-readable form, resembling assembler mnemonics (instead of the older Lisp-style form).

If VERBOSE is TRUE, insns are printed with more complete (but longer) pattern names and with extra information, and prefixed with their INSN_UIDs.

Blech, pretty-print can't print integers with a specified width.

References DEBUG_TEMP_UID, DECL_NAME, DECL_P, DECL_UID, IDENTIFIER_POINTER, INSN_VAR_LOCATION_DECL, INSN_VAR_LOCATION_LOC, pp_printf(), pp_string(), print_pattern(), TREE_CODE, and VAR_LOC_UNKNOWN_P.

static void print_insn_with_notes ( pretty_printer ,
const_rtx   
)
static

Printing of RTL in "slim", mnemonic like form. Copyright (C) 1992-2013 Free Software Foundation, Inc. Contributed by Michael Tiemann (tiema.nosp@m.nn@c.nosp@m.ygnus.nosp@m..com) Enhanced by, and currently maintained by, Jim Wilson (wilso.nosp@m.n@cy.nosp@m.gnus..nosp@m.com)

This file is part of GCC.

GCC is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3, or (at your option) any later version.

GCC is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with GCC; see the file COPYING3. If not see http://www.gnu.org/licenses/. Historically this form of RTL dumping was introduced along with the Haifa instruction scheduling pass, hence the name of this file. But there is nothing in this file left that is scheduler-specific. The functions in this file try to print RTL in a form resembling assembler mnemonics. Because this form is more concise than the "traditional" form of RTL printing in Lisp-style, the form printed by this file is called "slim". RTL dumps in slim format can be obtained by appending the "-slim" option to -fdump-rtl-<pass>. Control flow graph output as a DOT file is always printed in slim form.

The normal interface to the functionality provided in this pretty-printer is through the dump_*_slim functions to print to a stream, or via the print_*_slim functions to print into a user's pretty-printer.

It is also possible to obtain a string for a single pattern as a string pointer, via str_pattern_slim, but this usage is discouraged. For insns we print patterns, and for some patterns we print insns...

Referenced by dump_insn_slim(), and dump_rtl_slim().

static void print_insn_with_notes ( )
static

Pretty-print a slim dump of X (an insn) to PP, including any register note attached to the instruction.

void print_pattern ( )

The next step in insn detalization, its pattern recognition.

  Print the sequence insns indented.   
     Fall through.   


     Fallthru &ndash; leave UNSPECs to print_exp.   
void rtl_dump_bb_for_graph ( )

Dumps basic block BB to pretty-printer PP in slim form and without and no indentation, for use as a label of a DOT graph record-node.

TODO: inter-bb stuff.

References ggc_strdup, pp_formatted_text(), and print_pattern().

const char* str_pattern_slim ( )

Pretty-print pattern X of some insn in non-verbose mode. Return a string pointer to the pretty-printer buffer.

This function is only exported exists only to accommodate some older users of the slim RTL pretty printers. Please do not use it for new code.