[PATCH 00/89] Compile-time gimple-checking
Michael Matz
matz@suse.de
Wed Apr 23 14:43:00 GMT 2014
Hi,
On Mon, 21 Apr 2014, David Malcolm wrote:
> This is a greatly-expanded version of:
> http://gcc.gnu.org/ml/gcc-patches/2013-12/msg01262.html
>
> As of r205034 (de6bd75e3c9bc1efe8a6387d48eedaa4dafe622d) and
> r205428 (a90353203da18288cdac1b0b78fe7b22c69fe63f) the various gimple
> statements form a C++ inheritance hierarchy, but we're not yet making much
> use of that in the code: everything refers to just "gimple" (or
> "const_gimple"), and type-checking is performed at run-time within the
> various gimple_foo_* accessors in gimple.h, and almost nowhere else.
>
> The following patch series introduces compile-time checking of much of
> the handling of gimple statements.
FWIW, I still don't like any of this for reasons already outlined here:
http://gcc.gnu.org/ml/gcc-patches/2013-11/msg00773.html
(basically: I consider automatically creating types a very bad idea. You
do do that by simply creating a type for every gimple code.)
> case GIMPLE_SWITCH:
> dump_gimple_switch (buffer, gs->as_a_gimple_switch (), spc, flags);
> break;
>
> where the ->as_a_gimple_switch is a no-op cast from "gimple" to the more
> concrete "gimple_switch" in a release build, with runtime checking for
> code == GIMPLE_SWITCH added in a checked build (it uses as_a <>
> internally).
Unlike others here I do like the cast-as-method (if we absolutely _must_
have a complicated type hierarchy for gimple), but would suggest different
a name: the "gimple_" is tautological, and the "a_" just noise, just name
it "gs->as_switch()" (incidentally then it's _really_ shorter than the
ugly is_a/as_a syntax).
Ciao,
Michael.
More information about the Gcc-patches
mailing list