sivachandra added inline comments.

================
Comment at: test/lang/cpp/incomplete-types/Makefile:8
@@ +7,3 @@
+
+ifneq (,$(findstring clang,$(CC)))
+  CFLAGS_LIMIT += -flimit-debug-info
----------------
dblaikie wrote:
> In case it's interesting, you can get similarly problematic DWARF by using a 
> dynamic class (one with virtual functions) with a key function that is not 
> defined in the current translation unit. 
> 
> GCC implements this behavior as well (whereas GCC doesn't implement the 
> behavior that is triggering on basic_string involving explicit instantiation 
> declarations/definitions) and also has a flag for it: 
> -femit-class-debug-always (I think last I recall, Eric Christopher mentioned 
> he'd looked at the GCC implementation of this flag and it differed in some 
> ways from Clang's, so he was reticent to add a compatibility flag for this in 
> Clang... but we could discuss/revisit that, perhaps (though I suppose it 
> wouldn't allow you to /enable/ this optimization, only disable it - not sure 
> if there's a way to opt-in in GCC))
> 
> Though it's easy to "disable" the feature by simply not triggering it, rather 
> than using a flag to turn it off - eg: providing no key function for a type 
> (if you're triggering the dynamic class case, not the template case), or 
> removing an explicit instantiation declaration/definition (if you're 
> triggering the template case)
Thanks for this info. I can remove the use of std::string and make use of a 
dynamic class to test this behavior. And, if it can be tested with GCC as well, 
then @skipIfGcc can be removed.

================
Comment at: test/lang/cpp/incomplete-types/TestCppIncompleteTypes.py:5
@@ +4,3 @@
+
+class TestCppIncompleteTypes(TestBase):
+
----------------
dblaikie wrote:
> You don't seem to have a test case for the shared library case in the bug 
> report? (decl in one obj, def in the other, shared library/object/whatever 
> boundary between the two)
> 
> (& not sure what the behavior is in the case where the def is provided in one 
> obj and they are statically linked together - bug report mentions the failure 
> doesn't occur, but I don't know if it does the right thing (actually finds 
> the definition) - I know lldb used to not do the right thing there, and had 
> some error message about the compiler being wrong)
Per my understanding, LLDB does not search the world to complete or lookup a 
type. So, shared library case will not still work. If the objects are 
statically linked, it will however.

Making it work in the shared library case is the next step. I treated pr24812 
as unrelated to this. I can open it back if you feel it should be kept open 
until the shared library case is fixed.


http://reviews.llvm.org/D13066



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

Reply via email to