* @author Martin Trapp, Christian Schaefer, Goetz Lindenmaier, Hubert Schmidt
* @version $Id$
*/
-#ifdef HAVE_CONFIG_H
#include "config.h"
-#endif
-#ifdef HAVE_STRING_H
#include <string.h>
-#endif
-#ifdef HAVE_STDLIB_H
#include <stdlib.h>
-#endif
#include <stdarg.h>
#include "firm_common_t.h"
#include "eset.h"
#include "pset.h"
-#if DO_HEAPANALYSIS
-extern void dump_irn_chi_term(FILE *FL, ir_node *n);
-extern void dump_irn_state(FILE *FL, ir_node *n);
-extern int get_opt_dump_abstvals(void);
-typedef unsigned long SeqNo;
-extern SeqNo get_Block_seqno(ir_node *n);
-#endif
-
/** Dump only irgs with names that start with this prefix. */
static ident *dump_file_filter_id = NULL;
/*-----------------------------------------------------------------*/
static void dump_whole_node(ir_node *n, void *env);
-static INLINE void dump_loop_nodes_into_graph(FILE *F, ir_graph *irg);
+static inline void dump_loop_nodes_into_graph(FILE *F, ir_graph *irg);
/*-----------------------------------------------------------------*/
/* Helper functions. */
ir_node **blk_list = construct_block_lists(irg);
int i;
ir_graph *rem = current_ir_graph;
- list_tuple *lists = xmalloc(sizeof(*lists));
+ list_tuple *lists = XMALLOC(list_tuple);
current_ir_graph = irg;
/* implementation for default nodes */
switch (get_irn_opcode(n)) {
-
- case iro_Const:
- ir_fprintf(F, "%T", get_Const_tarval(n));
- break;
-
case iro_SymConst:
switch (get_SymConst_kind(n)) {
case symconst_addr_name:
case iro_DivMod:
fprintf(F, "%s[%s]", get_irn_opname(n), get_mode_name_ex(get_DivMod_resmode(n), &bad));
break;
+ case iro_Builtin:
+ fprintf(F, "%s[%s]", get_irn_opname(n), get_builtin_kind_name(get_Builtin_kind(n)));
+ break;
default:
default_case:
X(P_frame_base),
X(P_tls),
X(T_args),
- X(P_value_arg_base)
#undef X
};
}
break;
+ case iro_Const:
+ ir_fprintf(F, "%T ", get_Const_tarval(n));
+ break;
+
case iro_Proj:
pred = get_Proj_pred(n);
proj_nr = get_Proj_proj(n);
return;
}
- mode = get_irn_mode(node);
+ mode = get_irn_mode(n);
if(mode == mode_M) {
print_vcg_color(F, ird_color_memory);
return;
/* Adds a new node info dumper callback. */
void *dump_add_node_info_callback(dump_node_info_cb_t *cb, void *data)
{
- hook_entry_t *info = xmalloc(sizeof(*info));
+ hook_entry_t *info = XMALLOC(hook_entry_t);
info->hook._hook_node_info = cb;
info->context = data;
/**
* Dump the node information of a node n to a file F.
*/
-static INLINE int dump_node_info(FILE *F, ir_node *n)
+static inline int dump_node_info(FILE *F, ir_node *n)
{
int bad = 0;
const ir_op_ops *ops = get_op_ops(get_irn_op(n));
return bad;
}
-static INLINE int is_constlike_node(const ir_node *node)
+static inline int is_constlike_node(const ir_node *node)
{
const ir_op *op = get_irn_op(node);
return is_op_constlike(op);
for (i = 0; i < get_irn_arity(n); i++) {
ir_node *con = get_irn_n(n, i);
- if (is_constlike_node(con) && irn_not_visited(con)) {
+ if (is_constlike_node(con) && !irn_visited(con)) {
int bad = 0;
mark_irn_visited(con);
if(dump_node_edge_hook)
dump_node_edge_hook(F, n);
-#if DO_HEAPANALYSIS
- dump_irn_chi_term(F, n);
- dump_irn_state(F, n);
-#endif
}
/** dump the edge to the block this node belongs to */
PRINT_NODEID(block);
fprintf(F, "\" label: \"");
dump_node_label(F, block);
-#if DO_HEAPANALYSIS
- if (get_opt_dump_abstvals())
- fprintf(F, " seqno: %d", (int)get_Block_seqno(block));
-#endif
/* colorize blocks */
if (! get_Block_matured(block))
/* Close the vcg information for the block */
fprintf(F, "}\n");
dump_const_node_local(F, block);
-#if DO_HEAPANALYSIS
- dump_irn_chi_term(F, block);
-#endif
fprintf(F, "\n");
}
}
}
-static INLINE void
+static inline void
dump_loop_label(FILE *F, ir_loop *loop) {
fprintf(F, "loop %d, %d sons, %d nodes",
get_loop_depth(loop), get_loop_n_sons(loop), get_loop_n_nodes(loop));
}
-static INLINE void dump_loop_info(FILE *F, ir_loop *loop) {
+static inline void dump_loop_info(FILE *F, ir_loop *loop) {
fprintf(F, " info1: \"");
fprintf(F, " loop nr: %d", get_loop_loop_nr(loop));
#ifdef DEBUG_libfirm /* GL @@@ debug analyses */
fprintf(F, "\"");
}
-static INLINE void
+static inline void
dump_loop_node(FILE *F, ir_loop *loop) {
fprintf(F, "node: {title: \"");
PRINT_LOOPID(loop);
fprintf(F, "}\n");
}
-static INLINE void
+static inline void
dump_loop_node_edge(FILE *F, ir_loop *loop, int i) {
assert(loop);
fprintf(F, "edge: {sourcename: \"");
fprintf(F, "}\n");
}
-static INLINE void
+static inline void
dump_loop_son_edge(FILE *F, ir_loop *loop, int i) {
assert(loop);
fprintf(F, "edge: {sourcename: \"");
}
}
-static INLINE
+static inline
void dump_loop_nodes_into_graph(FILE *F, ir_graph *irg) {
ir_graph *rem = current_ir_graph;
current_ir_graph = irg;
if (!suffix2) suffix2 = "";
/* open file for vcg graph */
- fname = xmalloc (len * 2 + strlen(suffix1) + strlen(suffix2) + 5);
+ fname = XMALLOCN(char, len * 2 + strlen(suffix1) + strlen(suffix2) + 5);
/* strncpy (fname, nm, len); */ /* copy the filename */
j = 0;
if (!suffix) suffix = "";
/** open file for vcg graph */
- fname = xmalloc(len * 2 + 5 + strlen(suffix));
+ fname = XMALLOCN(char, len * 2 + 5 + strlen(suffix));
/* strcpy (fname, name);*/ /* copy the filename */
j = 0;
for (i = 0; i < len; ++i) { /* replace '/' in the name: escape by @. */