[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Basic blocks, jump targets and locals



On 15 June 2015 at 01:28, David Malcolm <dmalcolm@redhat.com> wrote:
> On Sat, 2015-06-13 at 21:25 +0100, Dibyendu Majumdar wrote:
>> On 11 June 2015 at 21:31, David Malcolm <dmalcolm@redhat.com> wrote:
>> > Local variables in libgccjit are local to a *function*; there's no
>> > association between them and blocks.  Blocks in libgccjit relate to
>> > control flow, not to scope.
>> >
>> > Note that any initialization of a local variable has to be done
>> > explicitly, by adding an assignment statement.  Typically that
>> > assignment statement would be added to the initial block, as in the
>> > example above (so I suppose that's an association of sorts between
>> > locals and the entry block).
>> >
>>
>> Can an assignment statement be added to a block that is already terminated?
>
> No; you'll get an error like:
>
> adding to terminated block: entry (already terminated by: goto foo)
>
> So you may want to wait until you've added all the initializations
> before adding the jump from the entry block to the block for the first
> bytecode.
>

I can do that, but maybe I don't need to? If the assignment occurs in
a subsequent block and is valid from control flow point of view then
it is correct - right?

Regards
Dibyendu