[cfe-commits] r60989 - in /cfe/trunk/lib/CodeGen: CGDecl.cpp CGExprScalar.cpp
dgregor at apple.com
Mon Dec 15 08:47:25 PST 2008
On Dec 13, 2008, at 6:07 PM, Eli Friedman wrote:
> On Sat, Dec 13, 2008 at 4:40 PM, Neil Booth <neil at daikokuya.co.uk>
>> Eli Friedman wrote:-
>>> On Sat, Dec 13, 2008 at 10:58 AM, Chris Lattner <sabre at nondot.org>
>>>> Author: lattner
>>>> Date: Sat Dec 13 12:58:59 2008
>>>> New Revision: 60989
>>>> URL: http://llvm.org/viewvc/llvm-project?rev=60989&view=rev
>>>> 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
>>> 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
>>> 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.
We'll need similar information to determine whether we're jumping past
declarations with initialization in C++.
More information about the cfe-commits