diff options
author | clyon <clyon@138bc75d-0d04-0410-961f-82ee72b054a4> | 2013-09-23 15:13:39 +0000 |
---|---|---|
committer | clyon <clyon@138bc75d-0d04-0410-961f-82ee72b054a4> | 2013-09-23 15:13:39 +0000 |
commit | 3c59e4a7c9b322cb2ee67c66247995c7f95ae914 (patch) | |
tree | f8aeebb9d4ef8b224568c677be438c4daa431b63 /gcc/gimple-pretty-print.c | |
parent | 5f00d31b3511b980ba6cce712687aad1fff1209b (diff) | |
download | gcc-3c59e4a7c9b322cb2ee67c66247995c7f95ae914.tar.gz |
2013-09-23 Kugan Vivekanandarajah <kuganv@linaro.org>
gcc/
* gimple-pretty-print.c (dump_ssaname_info): New function.
(dump_gimple_phi): Call it.
(pp_gimple_stmt_1): Likewise.
* tree-core.h (tree_ssa_name): New union ssa_name_info_type field.
(range_info_def): Declare.
* tree-pretty-print.c (pp_double_int): New function.
(dump_generic_node): Call it.
* tree-pretty-print.h (pp_double_int): Declare.
* tree-ssa-alias.c (dump_alias_info): Check pointer type.
* tree-ssanames.h (range_info_def): New structure.
(value_range_type): Move definition here.
(set_range_info, value_range_type, duplicate_ssa_name_range_info):
Declare.
* tree-ssanames.c (make_ssa_name_fn): Check pointer type at
initialization.
(set_range_info): New function.
(get_range_info): Likewise.
(duplicate_ssa_name_range_info): Likewise.
(duplicate_ssa_name_fn): Check pointer type and call
duplicate_ssa_name_range_info.
* tree-ssa-copy.c (fini_copy_prop): Likewise.
* tree-vrp.c (value_range_type): Remove definition, now in
tree-ssanames.h.
(vrp_finalize): Call set_range_info to update value range of
SSA_NAMEs.
* tree.h (SSA_NAME_PTR_INFO): Macro changed to access via union.
(SSA_NAME_RANGE_INFO): New macro.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@202831 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/gimple-pretty-print.c')
-rw-r--r-- | gcc/gimple-pretty-print.c | 78 |
1 files changed, 46 insertions, 32 deletions
diff --git a/gcc/gimple-pretty-print.c b/gcc/gimple-pretty-print.c index 01a1ab56680..bc01bea167e 100644 --- a/gcc/gimple-pretty-print.c +++ b/gcc/gimple-pretty-print.c @@ -1600,23 +1600,20 @@ dump_gimple_asm (pretty_printer *buffer, gimple gs, int spc, int flags) } } - -/* Dump a PHI node PHI. BUFFER, SPC and FLAGS are as in pp_gimple_stmt_1. - The caller is responsible for calling pp_flush on BUFFER to finalize - pretty printer. */ +/* Dump ptr_info and range_info for NODE on pretty_printer BUFFER with + SPC spaces of indent. */ static void -dump_gimple_phi (pretty_printer *buffer, gimple phi, int spc, int flags) +dump_ssaname_info (pretty_printer *buffer, tree node, int spc) { - size_t i; - tree lhs = gimple_phi_result (phi); + if (TREE_CODE (node) != SSA_NAME) + return; - if (flags & TDF_ALIAS - && POINTER_TYPE_P (TREE_TYPE (lhs)) - && SSA_NAME_PTR_INFO (lhs)) + if (POINTER_TYPE_P (TREE_TYPE (node)) + && SSA_NAME_PTR_INFO (node)) { unsigned int align, misalign; - struct ptr_info_def *pi = SSA_NAME_PTR_INFO (lhs); + struct ptr_info_def *pi = SSA_NAME_PTR_INFO (node); pp_string (buffer, "PT = "); pp_points_to_solution (buffer, &pi->pt); newline_and_indent (buffer, spc); @@ -1628,6 +1625,41 @@ dump_gimple_phi (pretty_printer *buffer, gimple phi, int spc, int flags) pp_string (buffer, "# "); } + if (!POINTER_TYPE_P (TREE_TYPE (node)) + && SSA_NAME_RANGE_INFO (node)) + { + double_int min, max; + value_range_type range_type = get_range_info (node, &min, &max); + + if (range_type == VR_VARYING) + pp_printf (buffer, "# RANGE VR_VARYING"); + else if (range_type == VR_RANGE || range_type == VR_ANTI_RANGE) + { + pp_printf (buffer, "# RANGE "); + pp_printf (buffer, "%s[", range_type == VR_RANGE ? "" : "~"); + pp_double_int (buffer, min, TYPE_UNSIGNED (TREE_TYPE (node))); + pp_printf (buffer, ", "); + pp_double_int (buffer, max, TYPE_UNSIGNED (TREE_TYPE (node))); + pp_printf (buffer, "]"); + newline_and_indent (buffer, spc); + } + } +} + + +/* Dump a PHI node PHI. BUFFER, SPC and FLAGS are as in pp_gimple_stmt_1. + The caller is responsible for calling pp_flush on BUFFER to finalize + pretty printer. */ + +static void +dump_gimple_phi (pretty_printer *buffer, gimple phi, int spc, int flags) +{ + size_t i; + tree lhs = gimple_phi_result (phi); + + if (flags & TDF_ALIAS) + dump_ssaname_info (buffer, lhs, spc); + if (flags & TDF_RAW) dump_gimple_fmt (buffer, spc, flags, "%G <%T, ", phi, gimple_phi_result (phi)); @@ -1908,27 +1940,9 @@ pp_gimple_stmt_1 (pretty_printer *buffer, gimple gs, int spc, int flags) && gimple_has_mem_ops (gs)) dump_gimple_mem_ops (buffer, gs, spc, flags); - if ((flags & TDF_ALIAS) - && gimple_has_lhs (gs)) - { - tree lhs = gimple_get_lhs (gs); - if (TREE_CODE (lhs) == SSA_NAME - && POINTER_TYPE_P (TREE_TYPE (lhs)) - && SSA_NAME_PTR_INFO (lhs)) - { - unsigned int align, misalign; - struct ptr_info_def *pi = SSA_NAME_PTR_INFO (lhs); - pp_string (buffer, "# PT = "); - pp_points_to_solution (buffer, &pi->pt); - newline_and_indent (buffer, spc); - if (get_ptr_info_alignment (pi, &align, &misalign)) - { - pp_printf (buffer, "# ALIGN = %u, MISALIGN = %u", - align, misalign); - newline_and_indent (buffer, spc); - } - } - } + if (gimple_has_lhs (gs) + && (flags & TDF_ALIAS)) + dump_ssaname_info (buffer, gimple_get_lhs (gs), spc); switch (gimple_code (gs)) { |