From: Richard Biener <richard.guenther@gmail.com>
To: Thomas Schwinge <thomas@codesourcery.com>
Cc: Jan Hubicka <hubicka@ucw.cz>,
GCC Patches <gcc-patches@gcc.gnu.org>,
Richard Biener <rguenther@suse.de>,
Jason Merrill <jason@redhat.com>
Subject: Re: Move DECL_VINDEX and DECL_SAVED_TREE into function_decl
Date: Thu, 10 Jul 2014 11:36:00 -0000 [thread overview]
Message-ID: <CAFiYyc3-CZYEOVq=W7w5aTZW800ohY+2CmE8J6fkCBuVjDC6Ug@mail.gmail.com> (raw)
In-Reply-To: <87egxtr19t.fsf@kepler.schwinge.homeip.net>
On Thu, Jul 10, 2014 at 11:50 AM, Thomas Schwinge
<thomas@codesourcery.com> wrote:
> Hi!
>
> On Mon, 23 Jun 2014 22:25:41 +0200, Jan Hubicka <hubicka@ucw.cz> wrote:
>> this patch makes DECL_VINDEX and DECL_SAVED_TREE to be FUNCTION_DECL only.
>
>> Bootstrapped/regtested x86_64-linux, OK?
>
> ... without --enable-checking=fold. ;-P
>
>> * class.c (check_methods, create_vtable_ptr, determine_key_method,
>> add_vcall_offset_vtbl_entries_1): Guard VINDEX checks by FUNCTION_DECL check.
>> * cp-tree.h (lang_decl_ns): Add ns_using and ns_users.
>> (DECL_NAMESPACE_USING, DECL_NAMESPACE_USERS): Use lang_decl_ns.
>> (DECL_NAMESPACE_ASSOCIATIONS): Use DECL_INITIAL.
>> (DECL_TEMPLATE_INSTANTIATIONS): Use DECL_SIZE_UNIT.
>> * tree.c (find_decls_types_r): Do not check DECL_VINDEX for TYPE_DECL.
>> * tree.h (DECL_VINDEX, DECL_SAVED_TREE): Restrict to DECL_FUNCTION.
>> * tree-core.h (tree_decl_non_common): Move saved_tree and vindex...
>> (tree_function_decl): ... here.
>> * tree-streamer-out.c (write_ts_decl_non_common_tree_pointers): Move
>> streaming of vindex to ...
>> (write_ts_function_decl_tree_pointers): ... here.
>>
>> * tree-streamer-in.c (lto_input_ts_decl_non_common_tree_pointers):
>> Do not stream DECL_VINDEX.
>> (lto_input_ts_function_decl_tree_pointers): Stream it here.
>>
>> * lto.c (mentions_vars_p_decl_non_common): Move DECL_VINDEX check to ..
>> (mentions_vars_p_function): ... here.
>> (compare_tree_sccs_1): Update VINDEX checks.
>> (lto_fixup_prevailing_decls): Likewise.
>
> I'm seeing ICEs: »tree check: expected function_decl, have type_decl in
> fold_checksum_tree, at fold-const.c:14861«. Is the following the correct
> fix, or should this be done differently?
>
> --- gcc/fold-const.c
> +++ gcc/fold-const.c
> @@ -14858,7 +14858,8 @@ fold_checksum_tree (const_tree expr, struct md5_ctx *ctx,
>
> if (CODE_CONTAINS_STRUCT (TREE_CODE (expr), TS_DECL_NON_COMMON))
> {
> - fold_checksum_tree (DECL_VINDEX (expr), ctx, ht);
> + if (TREE_CODE (expr) == FUNCTION_DECL)
> + fold_checksum_tree (DECL_VINDEX (expr), ctx, ht);
> fold_checksum_tree (DECL_RESULT_FLD (expr), ctx, ht);
> fold_checksum_tree (DECL_ARGUMENT_FLD (expr), ctx, ht);
> }
>
Looks good to me.
Richard.
> Grüße,
> Thomas
next prev parent reply other threads:[~2014-07-10 11:36 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-06-23 20:25 Jan Hubicka
2014-06-24 14:53 ` Jason Merrill
2014-06-24 18:18 ` Jan Hubicka
2014-06-24 20:50 ` Jason Merrill
2014-06-25 2:26 ` Jan Hubicka
2014-07-10 9:50 ` Thomas Schwinge
2014-07-10 11:36 ` Richard Biener [this message]
2014-07-10 11:58 ` Jan Hubicka
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to='CAFiYyc3-CZYEOVq=W7w5aTZW800ohY+2CmE8J6fkCBuVjDC6Ug@mail.gmail.com' \
--to=richard.guenther@gmail.com \
--cc=gcc-patches@gcc.gnu.org \
--cc=hubicka@ucw.cz \
--cc=jason@redhat.com \
--cc=rguenther@suse.de \
--cc=thomas@codesourcery.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).