[cfe-commits] r60989 - in /cfe/trunk/lib/CodeGen: CGDecl.cpp CGExprScalar.cpp

Eli Friedman eli.friedman at gmail.com
Sat Dec 13 18:07:16 PST 2008


On Sat, Dec 13, 2008 at 4:40 PM, Neil Booth <neil at daikokuya.co.uk> wrote:
> Eli Friedman wrote:-
>
>> On Sat, Dec 13, 2008 at 10:58 AM, Chris Lattner <sabre at nondot.org> wrote:
>> > Author: lattner
>> > Date: Sat Dec 13 12:58:59 2008
>> > New Revision: 60989
>> >
>> > URL: http://llvm.org/viewvc/llvm-project?rev=60989&view=rev
>> > Log:
>> > disable Anders' recent VLA patch, this fixes PR3209.
>>
>> I looked into this a bit... the crash is an issue with the
>> stacksave/stackrestore code.  Roughly, the block with the VLA has a
>> return statement in it; then, the stackrestore gets inserted into an
>> undefined location.  This can be worked around with a
>> EnsureInsertPoint(), but the issue remains: we need to ensure that
>> control flow passes through an appropriate stackrestore before it
>> exits the block.  And we simply don't have the infrastructure in place
>> to do that at the moment.
>>
>> Has anyone thought about how to implement this?  It looks like
>> something similar is implemented for ObjC exception handling, but I'm
>> not sure how well the current approach will generalize...
>
> Do you intend to represent these control flow requirements explicitly
> in the AST, or have AST clients have to understand the semantics?
> Like implicit casts being made explicit, I'm in favour of the former.

Mmmm... it would definitely make things easier if the AST tracked
which scopes any given jump exits, like maybe a map from  jump
statements to the outermost scope which they jump out of.  I guess we
really need something like this even for Sema: we still haven't
implemented diagnostics for jumping into the scope of a VLA.

-Eli



More information about the cfe-commits mailing list