shafik marked an inline comment as done.
shafik added a comment.

In D79811#2033399 <https://reviews.llvm.org/D79811#2033399>, @labath wrote:

> In general, I think this is a good direction to go in. We can run into the 
> same kinds of problems even with non-artificial functions -- either the 
> application can have real ODR violations, or we can introduce ODR violations 
> during expression eval by playing fast-and-loose with anonymous namespaces.
>
> For all of those cases we need a more general approach to handling the "I 
> have two versions of a class, and they don't really match" problem.
>
> As for a test case where this would fail, I haven't had first hand experience 
> with this, but I would guess it involves two shared libraries, one which 
> contains the definition of this artificial constructor, and one which 
> doesn't. And then pulling both of these class definitions into the same 
> expression...


Yes, in some offline conversations with @clayborg that was the scenario he had 
seen this come up before. I was not able to synthesize a test case that ran 
into this issue but that does not mean it is not possible. Perhaps I just 
wasn't creative enough ;-)



================
Comment at: lldb/test/API/lang/cpp/constructors/main.cpp:11
+  int x=10;
+  ClassForSideEffect cse = ClassForSideEffect(100);
 };
----------------
labath wrote:
> Just for my own education, how would this fail without the patch? During 
> expression evaluation, we would synthesize a call to the default constructor 
> of `ClassForSideEffect`, instead of the one taking int=100? Or is it 
> something else?
So it would not initialize `x` to `10` and it would not call 
`ClassForSideEffect(100)` it would just default initialize it. I don't quite 
understand why, I plan to dig into that some more but I wanted to get the 
conversation rolling.


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