Hi Jason.
I know LAMBDA_EXPR will never make it to the -fdump-* files, but
debugging them internally is a pain. I don't know how you fly blind :).
Would it be ok to add tree dump support for them? Not pretty, but
practical...
Aldy
commit 67794c518d439ff2f6a886b19c8e9f0ad32de43b
Author: Aldy Hernandez <al...@redhat.com>
Date: Fri Mar 6 11:54:31 2015 -0800
* ptree.c (cxx_print_lambda_node): New.
(cxx_print_xnode): Handle LAMBDA_EXPR.
diff --git a/gcc/cp/ptree.c b/gcc/cp/ptree.c
index 79c80a3..2d0b584 100644
--- a/gcc/cp/ptree.c
+++ b/gcc/cp/ptree.c
@@ -204,6 +204,34 @@ cxx_print_identifier (FILE *file, tree node, int indent)
}
void
+cxx_print_lambda_node (FILE *file, tree node, int indent)
+{
+ if (LAMBDA_EXPR_MUTABLE_P (node))
+ fprintf (file, " /mutable");
+ fprintf (file, " default_capture_mode=[");
+ switch (LAMBDA_EXPR_DEFAULT_CAPTURE_MODE (node))
+ {
+ case CPLD_NONE:
+ fprintf (file, "NONE");
+ break;
+ case CPLD_COPY:
+ fprintf (file, "COPY");
+ break;
+ case CPLD_REFERENCE:
+ fprintf (file, "CPLD_REFERENCE");
+ break;
+ default:
+ fprintf (file, "??");
+ break;
+ }
+ fprintf (file, "] ");
+ print_node (file, "capture_list", LAMBDA_EXPR_CAPTURE_LIST (node), indent +
4);
+ print_node (file, "this_capture", LAMBDA_EXPR_THIS_CAPTURE (node), indent +
4);
+ print_node (file, "return_type", LAMBDA_EXPR_RETURN_TYPE (node), indent + 4);
+ print_node (file, "closure", LAMBDA_EXPR_CLOSURE (node), indent + 4);
+}
+
+void
cxx_print_xnode (FILE *file, tree node, int indent)
{
switch (TREE_CODE (node))
@@ -243,6 +271,9 @@ cxx_print_xnode (FILE *file, tree node, int indent)
print_node (file, "pattern", DEFERRED_NOEXCEPT_PATTERN (node), indent+4);
print_node (file, "args", DEFERRED_NOEXCEPT_ARGS (node), indent+4);
break;
+ case LAMBDA_EXPR:
+ cxx_print_lambda_node (file, node, indent);
+ break;
default:
break;
}