Mercurial > hg > CbC > CbC_gcc
diff gcc/gimple-pretty-print.c @ 132:d34655255c78
update gcc-8.2
author | mir3636 |
---|---|
date | Thu, 25 Oct 2018 10:21:07 +0900 |
parents | 84e7813d76e9 |
children | 1830386684a0 |
line wrap: on
line diff
--- a/gcc/gimple-pretty-print.c Thu Oct 25 08:08:40 2018 +0900 +++ b/gcc/gimple-pretty-print.c Thu Oct 25 10:21:07 2018 +0900 @@ -1,5 +1,5 @@ /* Pretty formatting of GIMPLE statements and expressions. - Copyright (C) 2001-2017 Free Software Foundation, Inc. + Copyright (C) 2001-2018 Free Software Foundation, Inc. Contributed by Aldy Hernandez <aldyh@redhat.com> and Diego Novillo <dnovillo@google.com> @@ -82,21 +82,17 @@ by xstrdup_for_dump. */ static const char * -dump_profile (int frequency, profile_count &count) +dump_profile (profile_count &count) { - float minimum = 0.01f; - - gcc_assert (0 <= frequency && frequency <= REG_BR_PROB_BASE); - float fvalue = frequency * 100.0f / REG_BR_PROB_BASE; - if (fvalue < minimum && frequency > 0) - return "[0.01%]"; - - char *buf; - if (count.initialized_p ()) - buf = xasprintf ("[%.2f%%] [count: %" PRId64 "]", fvalue, + char *buf = NULL; + if (!count.initialized_p ()) + return ""; + if (count.ipa_p ()) + buf = xasprintf ("[count: %" PRId64 "]", count.to_gcov_type ()); - else - buf = xasprintf ("[%.2f%%] [count: INV]", fvalue); + else if (count.initialized_p ()) + buf = xasprintf ("[local count: %" PRId64 "]", + count.to_gcov_type ()); const char *ret = xstrdup_for_dump (buf); free (buf); @@ -157,7 +153,7 @@ DEBUG_FUNCTION void debug (gimple &ref) { - print_gimple_stmt (stderr, &ref, 0, 0); + print_gimple_stmt (stderr, &ref, 0, TDF_NONE); } DEBUG_FUNCTION void @@ -362,14 +358,17 @@ break; case ABS_EXPR: + case ABSU_EXPR: if (flags & TDF_GIMPLE) { - pp_string (buffer, "__ABS "); + pp_string (buffer, + rhs_code == ABS_EXPR ? "__ABS " : "__ABSU "); dump_generic_node (buffer, rhs, spc, flags, false); } else { - pp_string (buffer, "ABS_EXPR <"); + pp_string (buffer, + rhs_code == ABS_EXPR ? "ABS_EXPR <" : "ABSU_EXPR <"); dump_generic_node (buffer, rhs, spc, flags, false); pp_greater (buffer); } @@ -433,8 +432,10 @@ case VEC_PACK_TRUNC_EXPR: case VEC_PACK_SAT_EXPR: case VEC_PACK_FIX_TRUNC_EXPR: + case VEC_PACK_FLOAT_EXPR: case VEC_WIDEN_LSHIFT_HI_EXPR: case VEC_WIDEN_LSHIFT_LO_EXPR: + case VEC_SERIES_EXPR: for (p = get_tree_code_name (code); *p; p++) pp_character (buffer, TOUPPER (*p)); pp_string (buffer, " <"); @@ -493,27 +494,6 @@ pp_greater (buffer); break; - case FMA_EXPR: - if (flags & TDF_GIMPLE) - { - pp_string (buffer, "__FMA ("); - dump_generic_node (buffer, gimple_assign_rhs1 (gs), spc, flags, false); - pp_comma (buffer); - dump_generic_node (buffer, gimple_assign_rhs2 (gs), spc, flags, false); - pp_comma (buffer); - dump_generic_node (buffer, gimple_assign_rhs3 (gs), spc, flags, false); - pp_right_paren (buffer); - } - else - { - 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; - case DOT_PROD_EXPR: pp_string (buffer, "DOT_PROD_EXPR <"); dump_generic_node (buffer, gimple_assign_rhs1 (gs), spc, flags, false); @@ -665,12 +645,11 @@ dump_gimple_return (pretty_printer *buffer, greturn *gs, int spc, dump_flags_t flags) { - tree t, t2; + tree t; t = gimple_return_retval (gs); - t2 = gimple_return_retbnd (gs); if (flags & TDF_RAW) - dump_gimple_fmt (buffer, spc, flags, "%G <%T %T>", gs, t, t2); + dump_gimple_fmt (buffer, spc, flags, "%G <%T>", gs, t); else { pp_string (buffer, "return"); @@ -679,11 +658,6 @@ pp_space (buffer); dump_generic_node (buffer, t, spc, flags, false); } - if (t2) - { - pp_string (buffer, ", "); - dump_generic_node (buffer, t2, spc, flags, false); - } pp_semicolon (buffer); } } @@ -877,7 +851,7 @@ if (flags & TDF_RAW) { if (gimple_call_internal_p (gs)) - dump_gimple_fmt (buffer, spc, flags, "%G <%s, %T", gs, + dump_gimple_fmt (buffer, spc, flags, "%G <.%s, %T", gs, internal_fn_name (gimple_call_internal_fn (gs)), lhs); else dump_gimple_fmt (buffer, spc, flags, "%G <%T, %T", gs, fn, lhs); @@ -901,7 +875,10 @@ pp_space (buffer); } if (gimple_call_internal_p (gs)) - pp_string (buffer, internal_fn_name (gimple_call_internal_fn (gs))); + { + pp_dot (buffer); + pp_string (buffer, internal_fn_name (gimple_call_internal_fn (gs))); + } else print_call_name (buffer, fn, flags); pp_string (buffer, " ("); @@ -934,8 +911,7 @@ if (TREE_CODE (fn) == FUNCTION_DECL && decl_is_tm_clone (fn)) pp_string (buffer, " [tm-clone]"); if (TREE_CODE (fn) == FUNCTION_DECL - && DECL_BUILT_IN_CLASS (fn) == BUILT_IN_NORMAL - && DECL_FUNCTION_CODE (fn) == BUILT_IN_TM_START + && fndecl_built_in_p (fn, BUILT_IN_TM_START) && gimple_call_num_args (gs) > 0) { tree t = gimple_call_arg (gs, 0); @@ -1015,7 +991,7 @@ if (cfun && cfun->cfg) { - basic_block dest = label_to_block (label); + basic_block dest = label_to_block (cfun, label); if (dest) { edge label_edge = find_edge (gimple_bb (gs), dest); @@ -1367,6 +1343,26 @@ gimple_debug_source_bind_get_value (gs)); break; + case GIMPLE_DEBUG_BEGIN_STMT: + if (flags & TDF_RAW) + dump_gimple_fmt (buffer, spc, flags, "%G BEGIN_STMT", gs); + else + dump_gimple_fmt (buffer, spc, flags, "# DEBUG BEGIN_STMT"); + break; + + case GIMPLE_DEBUG_INLINE_ENTRY: + if (flags & TDF_RAW) + dump_gimple_fmt (buffer, spc, flags, "%G INLINE_ENTRY %T", gs, + gimple_block (gs) + ? block_ultimate_origin (gimple_block (gs)) + : NULL_TREE); + else + dump_gimple_fmt (buffer, spc, flags, "# DEBUG INLINE_ENTRY %T", + gimple_block (gs) + ? block_ultimate_origin (gimple_block (gs)) + : NULL_TREE); + break; + default: gcc_unreachable (); } @@ -1393,18 +1389,12 @@ case GF_OMP_FOR_KIND_TASKLOOP: kind = " taskloop"; break; - case GF_OMP_FOR_KIND_CILKFOR: - kind = " _Cilk_for"; - break; case GF_OMP_FOR_KIND_OACC_LOOP: kind = " oacc_loop"; break; case GF_OMP_FOR_KIND_SIMD: kind = " simd"; break; - case GF_OMP_FOR_KIND_CILKSIMD: - kind = " cilksimd"; - break; default: gcc_unreachable (); } @@ -1436,36 +1426,25 @@ case GF_OMP_FOR_KIND_TASKLOOP: pp_string (buffer, "#pragma omp taskloop"); break; - case GF_OMP_FOR_KIND_CILKFOR: - break; case GF_OMP_FOR_KIND_OACC_LOOP: pp_string (buffer, "#pragma acc loop"); break; case GF_OMP_FOR_KIND_SIMD: pp_string (buffer, "#pragma omp simd"); break; - case GF_OMP_FOR_KIND_CILKSIMD: - pp_string (buffer, "#pragma simd"); - break; case GF_OMP_FOR_KIND_GRID_LOOP: pp_string (buffer, "#pragma omp for grid_loop"); break; default: gcc_unreachable (); } - if (gimple_omp_for_kind (gs) != GF_OMP_FOR_KIND_CILKFOR) - dump_omp_clauses (buffer, gimple_omp_for_clauses (gs), spc, flags); + dump_omp_clauses (buffer, gimple_omp_for_clauses (gs), spc, flags); for (i = 0; i < gimple_omp_for_collapse (gs); i++) { if (i) spc += 2; - if (gimple_omp_for_kind (gs) == GF_OMP_FOR_KIND_CILKFOR) - pp_string (buffer, "_Cilk_for ("); - else - { - newline_and_indent (buffer, spc); - pp_string (buffer, "for ("); - } + newline_and_indent (buffer, spc); + pp_string (buffer, "for ("); dump_generic_node (buffer, gimple_omp_for_index (gs, i), spc, flags, false); pp_string (buffer, " = "); @@ -1511,8 +1490,6 @@ if (!gimple_seq_empty_p (gimple_omp_body (gs))) { - if (gimple_omp_for_kind (gs) == GF_OMP_FOR_KIND_CILKFOR) - dump_omp_clauses (buffer, gimple_omp_for_clauses (gs), spc, flags); newline_and_indent (buffer, spc + 2); pp_left_brace (buffer); pp_newline (buffer); @@ -2146,7 +2123,7 @@ && SSA_NAME_RANGE_INFO (node)) { wide_int min, max, nonzero_bits; - value_range_type range_type = get_range_info (node, &min, &max); + value_range_kind range_type = get_range_info (node, &min, &max); if (range_type == VR_VARYING) pp_printf (buffer, "# RANGE VR_VARYING"); @@ -2695,8 +2672,7 @@ fprintf (outf, "%*sbb_%d:\n", indent, "", bb->index); else fprintf (outf, "%*s<bb %d> %s:\n", - indent, "", bb->index, dump_profile (bb->frequency, - bb->count)); + indent, "", bb->index, dump_profile (bb->count)); } } @@ -2910,20 +2886,13 @@ /* Handle the %G format for TEXT. Same as %K in handle_K_format in - tree-pretty-print.c but with a Gimple call statement as an argument. */ + tree-pretty-print.c but with a Gimple statement as an argument. */ void percent_G_format (text_info *text) { - gcall *stmt = va_arg (*text->args_ptr, gcall*); + gimple *stmt = va_arg (*text->args_ptr, gimple*); - /* Build a call expression from the Gimple call statement and - pass it to the K formatter that knows how to format it. */ - tree exp = build_vl_exp (CALL_EXPR, gimple_call_num_args (stmt) + 3); - CALL_EXPR_FN (exp) = gimple_call_fn (stmt); - TREE_TYPE (exp) = gimple_call_return_type (stmt); - CALL_EXPR_STATIC_CHAIN (exp) = gimple_call_chain (stmt); - SET_EXPR_LOCATION (exp, gimple_location (stmt)); - - percent_K_format (text, exp); + tree block = gimple_block (stmt); + percent_K_format (text, gimple_location (stmt), block); }