Mercurial > hg > CbC > CbC_gcc
diff gcc/gimple-pretty-print.c @ 67:f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
author | nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Tue, 22 Mar 2011 17:18:12 +0900 |
parents | b7f97abdc517 |
children | 04ced10e8804 |
line wrap: on
line diff
--- a/gcc/gimple-pretty-print.c Tue May 25 18:58:51 2010 +0900 +++ b/gcc/gimple-pretty-print.c Tue Mar 22 17:18:12 2011 +0900 @@ -81,7 +81,7 @@ /* Print the GIMPLE statement GS on stderr. */ -void +DEBUG_FUNCTION void debug_gimple_stmt (gimple gs) { print_gimple_stmt (stderr, gs, 0, TDF_VOPS|TDF_MEMSYMS); @@ -147,7 +147,7 @@ /* Print the GIMPLE sequence SEQ on stderr. */ -void +DEBUG_FUNCTION void debug_gimple_seq (gimple_seq seq) { print_gimple_seq (stderr, seq, 0, TDF_VOPS|TDF_MEMSYMS); @@ -377,6 +377,42 @@ } } +/* Helper for dump_gimple_assign. Print the ternary RHS of the + assignment GS. BUFFER, SPC and FLAGS are as in dump_gimple_stmt. */ + +static void +dump_ternary_rhs (pretty_printer *buffer, gimple gs, int spc, int flags) +{ + const char *p; + enum tree_code code = gimple_assign_rhs_code (gs); + switch (code) + { + case WIDEN_MULT_PLUS_EXPR: + case WIDEN_MULT_MINUS_EXPR: + for (p = tree_code_name [(int) code]; *p; p++) + pp_character (buffer, TOUPPER (*p)); + pp_string (buffer, " <"); + dump_generic_node (buffer, gimple_assign_rhs1 (gs), spc, flags, false); + pp_string (buffer, ", "); + dump_generic_node (buffer, gimple_assign_rhs2 (gs), spc, flags, false); + pp_string (buffer, ", "); + dump_generic_node (buffer, gimple_assign_rhs3 (gs), spc, flags, false); + pp_character (buffer, '>'); + break; + + case FMA_EXPR: + dump_generic_node (buffer, gimple_assign_rhs1 (gs), spc, flags, false); + pp_string (buffer, " * "); + dump_generic_node (buffer, gimple_assign_rhs2 (gs), spc, flags, false); + pp_string (buffer, " + "); + dump_generic_node (buffer, gimple_assign_rhs3 (gs), spc, flags, false); + break; + + default: + gcc_unreachable (); + } +} + /* Dump the gimple assignment GS. BUFFER, SPC and FLAGS are as in dump_gimple_stmt. */ @@ -419,6 +455,8 @@ dump_unary_rhs (buffer, gs, spc, flags); else if (gimple_num_ops (gs) == 3) dump_binary_rhs (buffer, gs, spc, flags); + else if (gimple_num_ops (gs) == 4) + dump_ternary_rhs (buffer, gs, spc, flags); else gcc_unreachable (); if (!(flags & TDF_RHS_ONLY)) @@ -504,11 +542,7 @@ pp_string (buffer, "{ "); EXECUTE_IF_SET_IN_BITMAP (pt->vars, 0, i, bi) { - struct tree_decl_minimal in; - tree var; - in.uid = i; - var = (tree) htab_find_with_hash (gimple_referenced_vars (cfun), - &in, i); + tree var = referenced_var_lookup (cfun, i); if (var) { dump_generic_node (buffer, var, 0, dump_flags, false); @@ -735,7 +769,7 @@ { tree var; - for (var = gimple_bind_vars (gs); var; var = TREE_CHAIN (var)) + for (var = gimple_bind_vars (gs); var; var = DECL_CHAIN (var)) { newline_and_indent (buffer, 2); print_declaration (buffer, var, spc, flags); @@ -1337,8 +1371,13 @@ && POINTER_TYPE_P (TREE_TYPE (lhs)) && SSA_NAME_PTR_INFO (lhs)) { + struct ptr_info_def *pi = SSA_NAME_PTR_INFO (lhs); pp_string (buffer, "PT = "); - pp_points_to_solution (buffer, &SSA_NAME_PTR_INFO (lhs)->pt); + pp_points_to_solution (buffer, &pi->pt); + newline_and_indent (buffer, spc); + if (pi->align != 1) + pp_printf (buffer, "# ALIGN = %u, MISALIGN = %u", + pi->align, pi->misalign); newline_and_indent (buffer, spc); pp_string (buffer, "# "); } @@ -1624,9 +1663,16 @@ && POINTER_TYPE_P (TREE_TYPE (lhs)) && SSA_NAME_PTR_INFO (lhs)) { + struct ptr_info_def *pi = SSA_NAME_PTR_INFO (lhs); pp_string (buffer, "# PT = "); - pp_points_to_solution (buffer, &SSA_NAME_PTR_INFO (lhs)->pt); + pp_points_to_solution (buffer, &pi->pt); newline_and_indent (buffer, spc); + if (pi->align != 1) + { + pp_printf (buffer, "# ALIGN = %u, MISALIGN = %u", + pi->align, pi->misalign); + newline_and_indent (buffer, spc); + } } } @@ -1852,7 +1898,8 @@ } } pp_write_text_to_stream (buffer); - check_bb_profile (bb, buffer->buffer->stream); + if (cfun) + check_bb_profile (bb, buffer->buffer->stream); } @@ -1938,7 +1985,6 @@ int flags) { edge e; - edge_iterator ei; gimple stmt; stmt = last_stmt (bb); @@ -1966,9 +2012,7 @@ /* If there is a fallthru edge, we may need to add an artificial goto to the dump. */ - FOR_EACH_EDGE (e, ei, bb->succs) - if (e->flags & EDGE_FALLTHRU) - break; + e = find_fallthru_edge (bb->succs); if (e && e->dest != bb->next_bb) {