On Jun 10, 2013, at 11:38 AM, David Blaikie <[email protected]> wrote:
> With this (or Eric's) change do we get the right (same as (or
> justified if different) GCC) number/placement of scopes/variables for:
> 
> if (x)
>  a();
> else
>  b();
> 
> if (int x = ...)
>  a();
> else
>  b();
> 
> if (int x = ...) {
>  int y = ...;
>  a();
> } else {
>  int z = ...;
> }
> 
> (in theory 'x' should be in-scope across both the if and the else, but
> we probably don't bother creating a scope if there's no variable in
> that scope - and just create one for the if/else bodies... but not
> sure)
I’m not sure if I understand what you are trying to say...

For the code above we generate a
(unsure)

DW_TAG_lexical scope
  DW_TAG_variable (x)

DW_TAG_lexical scope
  DW_TAG_variable (x)
  DW_TAG_lexical scope
    DW_TAG_variable (y)
  DW_TAG_lexical scope
    DW_TAG_variable (z)

I’m not sure how to interpret the x at the beginning of the function.

The only difference between GCC and clang I can spot is that GCC puts the 
entire function into a DW_TAG_lexical scope, but I don’t think that this is 
strictly necessary.

Does that answer the question?

-- adrian
_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to