This is an archive of the discontinued LLVM Phabricator instance.

Fix expression evaluation after clang r232793
AbandonedPublic

Authored by labath on Mar 20 2015, 7:39 AM.

Details

Summary

I do not entirely understand what is going on here, but it seems lldb has used
setHasExternalLexicalStorage on a TagDecl to trigger some kind of lazy loading of class contents.
However, r232793 in clang removed this possibility, which broke expression evaluation in lldb.
This CL fixes this by calling CompleteTagDecl manually.

I do not know if this is the correct fix for this issue, so I am mostly just drawing attention to
it. Feel free to commit a more correct solution.

Diff Detail

Event Timeline

labath updated this revision to Diff 22345.Mar 20 2015, 7:39 AM
labath retitled this revision from to Fix expression evaluation after clang r232793.
labath updated this object.
labath edited the test plan for this revision. (Show Details)
labath added reviewers: rsmith, clayborg.
labath added a subscriber: Unknown Object (MLST).
labath abandoned this revision.Mar 23 2015, 6:28 AM

abandoning as this is fixed already

labath reclaimed this revision.Mar 23 2015, 10:17 AM
labath added a subscriber: vharron.

Un-abandoning, since the offending commit was reverted. This can still serve as a starting point when it is re-committed.

clayborg requested changes to this revision.Mar 23 2015, 10:50 AM
clayborg edited edge metadata.

We really do not want this change. This means anytime we play with a class it will complete it right away, regardless of needing a full definition or not. This fix should be done in clang so that clang naturally knows how to say "I need a full definition and I need to know to complete a class when required".

This revision now requires changes to proceed.Mar 23 2015, 10:50 AM
labath abandoned this revision.Apr 7 2015, 2:39 AM