aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2024-01-27 13:05:30 +0100
committerJakub Jelinek <jakub@redhat.com>2024-01-27 13:05:30 +0100
commit675e522903825d41230fcbcafaf7d640205179f4 (patch)
treef8c7660c1505a52e94d970e6aea5a44ad28cd671 /gcc
parent5200ef26ac1771a75596394c20c5f1a348694d5e (diff)
downloadgcc-675e522903825d41230fcbcafaf7d640205179f4.zip
gcc-675e522903825d41230fcbcafaf7d640205179f4.tar.gz
gcc-675e522903825d41230fcbcafaf7d640205179f4.tar.bz2
lower-bitint: Add debugging dump of SSA_NAME -> decl mappings
While the SSA coalescing performed by lower bitint prints some information if -fdump-tree-bitintlower-details, it is really hard to read and doesn't contain the most important information which one looks for when debugging bitint lowering issues, namely what VAR_DECLs (or PARM_DECLs/RESULT_DECLs) each SSA_NAME in large_huge.m_names bitmap maps to. So, the following patch adds dumping of that, so that we know that say _3 -> bitint.3 _8 -> bitint.7 _16 -> bitint.7 etc. 2024-01-27 Jakub Jelinek <jakub@redhat.com> * gimple-lower-bitint.cc (gimple_lower_bitint): For TDF_DETAILS dump mapping of SSA_NAMEs to decls.
Diffstat (limited to 'gcc')
-rw-r--r--gcc/gimple-lower-bitint.cc31
1 files changed, 21 insertions, 10 deletions
diff --git a/gcc/gimple-lower-bitint.cc b/gcc/gimple-lower-bitint.cc
index 298f16e..79e3b55 100644
--- a/gcc/gimple-lower-bitint.cc
+++ b/gcc/gimple-lower-bitint.cc
@@ -6344,22 +6344,33 @@ gimple_lower_bitint (void)
}
}
tree atype = NULL_TREE;
+ if (dump_file && (dump_flags & TDF_DETAILS))
+ fprintf (dump_file, "Mapping SSA_NAMEs to decls:\n");
EXECUTE_IF_SET_IN_BITMAP (large_huge.m_names, 0, i, bi)
{
tree s = ssa_name (i);
int p = var_to_partition (large_huge.m_map, s);
- if (large_huge.m_vars[p] != NULL_TREE)
- continue;
- if (atype == NULL_TREE
- || !tree_int_cst_equal (TYPE_SIZE (atype),
- TYPE_SIZE (TREE_TYPE (s))))
+ if (large_huge.m_vars[p] == NULL_TREE)
+ {
+ if (atype == NULL_TREE
+ || !tree_int_cst_equal (TYPE_SIZE (atype),
+ TYPE_SIZE (TREE_TYPE (s))))
+ {
+ unsigned HOST_WIDE_INT nelts
+ = tree_to_uhwi (TYPE_SIZE (TREE_TYPE (s))) / limb_prec;
+ atype = build_array_type_nelts (large_huge.m_limb_type,
+ nelts);
+ }
+ large_huge.m_vars[p] = create_tmp_var (atype, "bitint");
+ mark_addressable (large_huge.m_vars[p]);
+ }
+ if (dump_file && (dump_flags & TDF_DETAILS))
{
- unsigned HOST_WIDE_INT nelts
- = tree_to_uhwi (TYPE_SIZE (TREE_TYPE (s))) / limb_prec;
- atype = build_array_type_nelts (large_huge.m_limb_type, nelts);
+ print_generic_expr (dump_file, s, TDF_SLIM);
+ fprintf (dump_file, " -> ");
+ print_generic_expr (dump_file, large_huge.m_vars[p], TDF_SLIM);
+ fprintf (dump_file, "\n");
}
- large_huge.m_vars[p] = create_tmp_var (atype, "bitint");
- mark_addressable (large_huge.m_vars[p]);
}
}