summaryrefslogtreecommitdiffstats
path: root/llvm/lib/MC/SubtargetFeature.cpp
diff options
context:
space:
mode:
authorDavid Blaikie <dblaikie@gmail.com>2014-05-05 23:23:53 +0000
committerDavid Blaikie <dblaikie@gmail.com>2014-05-05 23:23:53 +0000
commitef8a9518826b5b6b726eec66fd2fce6a3532ac66 (patch)
tree48fbf1a336caa4d475751f53550bbbc1dd46f386 /llvm/lib/MC/SubtargetFeature.cpp
parentfc55cb6e1481980aa6dcfa8c72f79e461201085e (diff)
downloadbcm5719-llvm-ef8a9518826b5b6b726eec66fd2fce6a3532ac66.tar.gz
bcm5719-llvm-ef8a9518826b5b6b726eec66fd2fce6a3532ac66.zip
Build debug info for ObjC interface types at the end of the translation unit to ensure all ivars are included.
This takes a different approach than the completedType/requiresCompleteType work which relies on AST callbacks to upgrade the type declaration to a definition. Instead, just defer constructing the definition to the end of the translation unit. This works because the definition is never needed by other debug info (so far as I know), whereas the definition of a struct may be needed by other debug info before the end of the translation unit (such as emitting the definition of a member function which must refer to that member function's declaration). If we had a callback for whenever an IVar was added to an ObjC interface we could use that, and remove the need for the ObjCInterfaceCache, which might be nice. (also would need a callback for when it was more than just a declaration so we could get properties, etc). A side benefit is that we also don't need the CompletedTypeCache anymore. Just rely on the declaration-ness of a type to decide whether its definition is yet to be emitted. There's still the PR19562 memory leak, but this should hopefully make that a bit easier to approach. llvm-svn: 208015
Diffstat (limited to 'llvm/lib/MC/SubtargetFeature.cpp')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud