On Fri, May 20, 2011 at 17:09, Lawrence Crowl <[email protected]> wrote:
> Split C++ test x1funcstatic.cc into a C test and a C++ test.
> Stream out and in various C++ tree members.
>
> Index: gcc/testsuite/ChangeLog.pph
>
> 2011-05-20 Lawrence Crowl <[email protected]>
>
> * x1funcstatic.h: Rename to c1funcstatic.h, as contents are C only.
> * x1funcstatic.c: Use c1funcstatic.h instead of x1funcstatic.h.
> * c1funcstatic.c: Add to test C functionality.
>
> Index: gcc/cp/ChangeLog.pph
>
> 2011-05-20 Lawrence Crowl <[email protected]>
>
> * pph-streamer-in.c (pph_stream_read_qual_use_vec): Add.
> (pph_stream_read_tree_vec_none): Add.
> (pph_stream_read_tree): Add read of various C++ fields.
> * pph-streamer-out.c (pph_stream_write_qual_use_vec): Add.
> (pph_stream_write_tree_vec_none): Add.
> (pph_stream_write_tree): Add write of various C++ fields.
Thanks.
As we chatted off list, you can now get rid off of the TREE_BINFO
handling code. That's already handled in the gimple streamer.
> + }
> + else if (TREE_CODE (expr) == TREE_LIST)
> + ; /* FIXME pph: already handled? */
Yes, TREE_LIST is handled already.
> + else if (flag_pph_debug >= 2)
> + fprintf (pph_logfile, "PPH: unimplemented read of %s\n",
> + tree_code_name[TREE_CODE (expr)]);
This will print everything. This hook is called from tree_on every
node, regardless of whether it was handled or not.
> @@ -788,6 +825,9 @@ pph_stream_write_tree (struct output_blo
> if (DECL_P (expr))
> {
> pph_output_tree_or_ref_1 (stream, DECL_INITIAL (expr), ref_p, 3);
> + /* FIXME pph:
> + pph_output_tree_or_ref_1 (stream, DECL_NAME (expr), ref_p, 3);
> + */
DECL_NAME is already handled in the gimple streamer.
>
> if (TREE_CODE (expr) == FUNCTION_DECL
> || TREE_CODE (expr) == NAMESPACE_DECL
> @@ -828,6 +868,57 @@ pph_stream_write_tree (struct output_blo
> pph_output_tree_or_ref_1 (stream, TYPE_BINFO (expr), ref_p, 3);
> }
> }
> + else if (TREE_CODE (expr) == OVERLOAD)
> + {
> + pph_output_tree_or_ref_1 (stream, OVL_CURRENT (expr), ref_p, 3);
> + }
> + else if (TREE_CODE (expr) == IDENTIFIER_NODE)
> + {
> + struct lang_identifier *id = LANG_IDENTIFIER_CAST(expr);
> + pph_output_tree_or_ref_1 (stream, TREE_TYPE (expr), ref_p, 3);
> + pph_output_string_with_length (stream, IDENTIFIER_POINTER (expr),
> + IDENTIFIER_LENGTH (expr));
> + pph_stream_write_cxx_binding (stream, id->namespace_bindings, ref_p);
> + pph_stream_write_cxx_binding (stream, id->bindings, ref_p);
> + pph_output_tree_or_ref_1 (stream, id->class_template_info, ref_p, 3);
> + pph_output_tree_or_ref_1 (stream, id->label_value, ref_p, 3);
factor out? (similarly on the reading side.
> + }
> + else if (TREE_CODE (expr) == BASELINK)
> + {
> + pph_output_tree_or_ref_1 (stream, BASELINK_BINFO (expr), ref_p, 3);
> + pph_output_tree_or_ref_1 (stream, BASELINK_FUNCTIONS (expr), ref_p, 3);
> + pph_output_tree_or_ref_1 (stream, BASELINK_ACCESS_BINFO (expr), ref_p,
> 3);
> + }
Likewise.
> + else if (TREE_CODE (expr) == TREE_BINFO)
> + {
> + pph_output_tree_or_ref_1 (stream, BINFO_OFFSET (expr), ref_p, 3);
> + pph_output_tree_or_ref_1 (stream, BINFO_VTABLE (expr), ref_p, 3);
> + pph_output_tree_or_ref_1 (stream, BINFO_VIRTUALS (expr), ref_p, 3);
> + pph_output_tree_or_ref_1 (stream, BINFO_VPTR_FIELD (expr), ref_p, 3);
> + pph_stream_write_tree_vec (stream, BINFO_BASE_ACCESSES (expr), ref_p);
> + pph_output_tree_or_ref_1 (stream, BINFO_INHERITANCE_CHAIN (expr),
> + ref_p, 3);
> + pph_output_tree_or_ref_1 (stream, BINFO_SUBVTT_INDEX (expr), ref_p, 3);
> + pph_output_tree_or_ref_1 (stream, BINFO_VPTR_INDEX (expr), ref_p, 3);
> + pph_stream_write_tree_vec_none (stream, BINFO_BASE_BINFOS (expr),
> ref_p);
> + }
> + else if (TREE_CODE (expr) == TEMPLATE_DECL)
> + {
> + pph_output_tree_or_ref_1 (stream, DECL_TEMPLATE_RESULT (expr), ref_p,
> 3);
> + pph_output_tree_or_ref_1 (stream, DECL_TEMPLATE_PARMS (expr), ref_p,
> 3);
> + pph_output_tree_or_ref_1 (stream, DECL_CONTEXT (expr), ref_p, 3);
> + /* FIXME pph: what of bit DECL_MEMBER_TEMPLATE_P (expr) */
Just write it out as an unsigned char.
> + }
> + else if (TREE_CODE (expr) == TEMPLATE_INFO)
> + {
> + pph_stream_write_qual_use_vec (stream,
> + TI_TYPEDEFS_NEEDING_ACCESS_CHECKING (expr), ref_p);
> + }
> + else if (TREE_CODE (expr) == TREE_LIST)
> + ; /* FIXME pph: already handled? */
Yes, already handled.
Diego.