This is the mail archive of the
mailing list for the GCC project.
Re: [RFC] tree-cfg.c: Check that a nonlocal label doesn't appearin the middle of a basic block.
> What is happen is that we now have two labels that are computed goto
> types but only referenced as for just getting the address and not
> actually reachable otherwise. It might be reasonable to split the
> BB but that takes up more memory than just allowing this special
> case since we know that non local gotos and real computed goto would
> have an abnormal edge to them and not be moved around.
Is there a local label between those two nonlocal labels?
Well, we should keep things straight so that we can determine whether
a given basic block is a target of a nonlocal goto by checking to see
if the first statement of the basic block is a nonlocal label.
Alternatively, we can use loop to walk through labels, looking for a
nonlocal label, but that's probably not desired.
Whatever we do, we should have clear "grammar" of statements in a
basic block and check that in tree_verify_flow_info. As far as I have
learned so far, the "grammar" is something like
zero or one forced label
zero or more nonlocal labels
zero or more local labels
zero or one control stmt