Technically this doesn't solve the issue in the PR, not by a long shot.
Alex has a patch for that already. However, this is another problem I
found while debugging this PR.
I saw a few of these useless debug statements in the gimple dumps, which
couldn't be removed by DSE/DCE because the labels are actually distinct:
# DEBUG <L0> => NULL
# DEBUG <L0> => NULL
# DEBUG <L0> => NULL
Interestingly, the labels are not user generated so there is no point in
creating debug statements for them. The problem was that
DECL_ARTIFICIAL was not being set by the C++ FE, when clearly this is a
compiler generated entity (I mean, it doesn't even have a name ;-)).
OK for mainline pending tests?
commit f113fced0629c2f47aa7f1ac91c7419a47ea9f3b
Author: Aldy Hernandez <al...@redhat.com>
Date: Tue Feb 24 14:05:41 2015 -0800
PR debug/58315
* decl.c (start_preparsed_function): Mark cdtor_label as
artificial.
diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c
index 67c5ae7..0c1d54a 100644
--- a/gcc/cp/decl.c
+++ b/gcc/cp/decl.c
@@ -13723,6 +13723,7 @@ start_preparsed_function (tree decl1, tree attrs, int
flags)
{
cdtor_label = build_decl (input_location,
LABEL_DECL, NULL_TREE, void_type_node);
+ DECL_ARTIFICIAL (cdtor_label) = 1;
DECL_CONTEXT (cdtor_label) = current_function_decl;
}