From: Markus Armbruster <armbru@redhat.com>
To: Eric Blake <eblake@redhat.com>
Cc: qemu-devel@nongnu.org, Michael Roth <mdroth@linux.vnet.ibm.com>
Subject: Re: [Qemu-devel] [PATCH v11 10/15] qapi: Emit structs used as variants in topological order
Date: Thu, 18 Feb 2016 15:35:23 +0100 [thread overview]
Message-ID: <877fi2dr2s.fsf@blackfin.pond.sub.org> (raw)
In-Reply-To: <1455778109-6278-11-git-send-email-eblake@redhat.com> (Eric Blake's message of "Wed, 17 Feb 2016 23:48:24 -0700")
Eric Blake <eblake@redhat.com> writes:
> Right now, we emit the branches of union types as a boxed pointer,
> and it suffices to have a forward declaration of the type. However,
> a future patch will swap things to directly use the branch type,
> instead of hiding it behind a pointer. For this to work, the
> compiler needs the full definition of the type, not just a forward
> declaration, prior to the union that is including the branch type.
> This patch just adds topological sorting to hoist all types
> mentioned in a branch of a union to be fully declared before the
> union itself. The sort is always possible, because we do not
> allow circular union types that include themselves as a direct
> branch
When a patch makes a "can't happen" claim, I normally ask for assertions
to make sure we go down in flames should it happen anyway. But in this
case, the C compiler will shoot us down then, and that'll do nicely.
> (it is, however, still possible to include a branch type
> that itself has a pointer to the union, for a type that can
> indirectly recursively nest itself - that remains safe, because
> that the member of the branch type will remain a pointer, and the
> QMP representation of such a type adds another {} for each recurring
> layer of the union type).
>
> Signed-off-by: Eric Blake <eblake@redhat.com>
next prev parent reply other threads:[~2016-02-18 14:35 UTC|newest]
Thread overview: 41+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-02-18 6:48 [Qemu-devel] [PATCH v11 00/15] prune some QAPI visitor cruft (was qapi cleanups subset E) Eric Blake
2016-02-18 6:48 ` [Qemu-devel] [PATCH v11 01/15] qapi: Simplify excess input reporting in input visitors Eric Blake
2016-02-18 6:48 ` [Qemu-devel] [PATCH v11 02/15] qapi: Forbid empty unions and useless alternates Eric Blake
2016-02-18 6:48 ` [Qemu-devel] [PATCH v11 03/15] qapi: Forbid 'any' inside an alternate Eric Blake
2016-02-18 12:05 ` Markus Armbruster
2016-02-18 14:40 ` Eric Blake
2016-02-18 17:03 ` Markus Armbruster
2016-02-18 20:11 ` Eric Blake
2016-02-19 8:32 ` Markus Armbruster
2016-02-18 6:48 ` [Qemu-devel] [PATCH v11 04/15] qapi: Add tests of complex objects within alternate Eric Blake
2016-02-18 6:48 ` [Qemu-devel] [PATCH v11 05/15] qapi-visit: Simplify how we visit common union members Eric Blake
2016-02-18 12:16 ` Markus Armbruster
2016-02-18 14:40 ` Eric Blake
2016-02-18 6:48 ` [Qemu-devel] [PATCH v11 06/15] qapi: Visit variants in visit_type_FOO_fields() Eric Blake
2016-02-18 13:58 ` Markus Armbruster
2016-02-18 14:43 ` Eric Blake
2016-02-18 17:04 ` Markus Armbruster
2016-02-18 6:48 ` [Qemu-devel] [PATCH v11 07/15] qapi-visit: Unify struct and union visit Eric Blake
2016-02-18 14:05 ` Markus Armbruster
2016-02-18 6:48 ` [Qemu-devel] [PATCH v11 08/15] qapi-visit: Less indirection in visit_type_Foo_fields() Eric Blake
2016-02-18 6:48 ` [Qemu-devel] [PATCH v11 09/15] qapi: Adjust layout of FooList types Eric Blake
2016-02-18 15:55 ` Markus Armbruster
2016-02-18 6:48 ` [Qemu-devel] [PATCH v11 10/15] qapi: Emit structs used as variants in topological order Eric Blake
2016-02-18 14:35 ` Markus Armbruster [this message]
2016-02-18 6:48 ` [Qemu-devel] [PATCH v11 11/15] qapi-visit: Use common idiom in gen_visit_fields_decl() Eric Blake
2016-02-18 6:48 ` [Qemu-devel] [PATCH v11 12/15] qapi: Don't box struct branch of alternate Eric Blake
2016-02-18 16:43 ` Markus Armbruster
2016-02-18 16:56 ` Eric Blake
2016-02-18 18:56 ` Markus Armbruster
2016-02-18 20:00 ` Eric Blake
2016-02-18 6:48 ` [Qemu-devel] [PATCH v11 13/15] qapi: Don't box branches of flat unions Eric Blake
2016-02-18 16:51 ` Markus Armbruster
2016-02-18 6:48 ` [Qemu-devel] [PATCH v11 14/15] qapi: Delete visit_start_union(), gen_visit_implicit_struct() Eric Blake
2016-02-18 16:52 ` Markus Armbruster
2016-02-18 17:00 ` Eric Blake
2016-02-18 17:12 ` Markus Armbruster
2016-02-18 6:48 ` [Qemu-devel] [PATCH v11 15/15] qapi: Change visit_start_implicit_struct to visit_start_alternate Eric Blake
2016-02-18 10:09 ` [Qemu-devel] [PATCH v11 00/15] prune some QAPI visitor cruft (was qapi cleanups subset E) Markus Armbruster
2016-02-18 14:44 ` Eric Blake
2016-02-18 20:08 ` Markus Armbruster
2016-02-18 20:24 ` Eric Blake
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=877fi2dr2s.fsf@blackfin.pond.sub.org \
--to=armbru@redhat.com \
--cc=eblake@redhat.com \
--cc=mdroth@linux.vnet.ibm.com \
--cc=qemu-devel@nongnu.org \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.