clayborg added a comment.

In D79811#2035078 <https://reviews.llvm.org/D79811#2035078>, @shafik wrote:

> In D79811#2034842 <https://reviews.llvm.org/D79811#2034842>, @clayborg wrote:
>
> > The error where two of the same classes conflicted usually only  happened 
> > in complex cases that were hard to reduce down.
> >
> > If I understand this correctly, the compiler should be able to auto 
> > synthesize these functions at will since the original class definition 
> > should have all of the information it needs to create them. So why do we 
> > need these to be added? Seems like the wrong approach IMHO. I would like 
> > the hear the justification for needing to add artificial functions to a 
> > class definition before we entertain this more. Can you elaborate on why 
> > you think these are needed?
>
>
> Yes, the test case below shows that if we don't add the method then during 
> expression evaluation of let's say:
>
>   A{}
>
>
> The `default member initializer` won't be done. So `x` won't be initialized 
> to `10` and the default constructor for `cse` will be called instead of 
> `ClassForSideEffect(int)`.


So that sounds like a compiler bug or something that we are not setting up 
right in the class type when we convert it from DWARF. Can you compile a quick 
example and dump the AST somehow and then compare it to the class we generate 
from debug info and see how they differ?


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D79811/new/

https://reviews.llvm.org/D79811



_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to