[llvm] r188082 - DebugInfo: provide the ability to add members to a class after it has been constructed
Robinson, Paul
Paul_Robinson at playstation.sony.com
Fri Aug 9 11:23:36 PDT 2013
> -----Original Message-----
> From: llvm-commits-bounces at cs.uiuc.edu [mailto:llvm-commits-
> bounces at cs.uiuc.edu] On Behalf Of David Blaikie
> Sent: Friday, August 09, 2013 10:17 AM
> To: llvm-commits at cs.uiuc.edu
> Subject: [llvm] r188082 - DebugInfo: provide the ability to add members
> to a class after it has been constructed
>
> Author: dblaikie
> Date: Fri Aug 9 12:17:12 2013
> New Revision: 188082
>
> URL: http://llvm.org/viewvc/llvm-project?rev=188082&view=rev
> Log:
> DebugInfo: provide the ability to add members to a class after it has
> been constructed
>
> This is necessary to allow Clang to only emit implicit members when
> there is code generated for them, rather than whenever they are ODR
> used.
Um, so classes could have different member lists in different TUs,
meaning if you're using type units, the type units won't match?
--paulr
>
> Modified:
> llvm/trunk/include/llvm/DebugInfo.h
> llvm/trunk/lib/IR/DebugInfo.cpp
>
> Modified: llvm/trunk/include/llvm/DebugInfo.h
> URL: http://llvm.org/viewvc/llvm-
> project/llvm/trunk/include/llvm/DebugInfo.h?rev=188082&r1=188081&r2=1880
> 82&view=diff
> ========================================================================
> ======
> --- llvm/trunk/include/llvm/DebugInfo.h (original)
> +++ llvm/trunk/include/llvm/DebugInfo.h Fri Aug 9 12:17:12 2013
> @@ -323,6 +323,7 @@ namespace llvm {
>
> DIArray getTypeArray() const { return getFieldAs<DIArray>(10); }
> void setTypeArray(DIArray Elements, DIArray TParams = DIArray());
> + void addMember(DISubprogram S);
> unsigned getRunTimeLang() const { return getUnsignedField(11); }
> DICompositeType getContainingType() const {
> return getFieldAs<DICompositeType>(12);
>
> Modified: llvm/trunk/lib/IR/DebugInfo.cpp
> URL: http://llvm.org/viewvc/llvm-
> project/llvm/trunk/lib/IR/DebugInfo.cpp?rev=188082&r1=188081&r2=188082&v
> iew=diff
> ========================================================================
> ======
> --- llvm/trunk/lib/IR/DebugInfo.cpp (original)
> +++ llvm/trunk/lib/IR/DebugInfo.cpp Fri Aug 9 12:17:12 2013
> @@ -647,6 +647,19 @@ void DICompositeType::setTypeArray(DIArr
> DbgNode = N;
> }
>
> +void DICompositeType::addMember(DISubprogram S) {
> + SmallVector<llvm::Value *, 16> M;
> + DIArray OrigM = getTypeArray();
> + unsigned Elements = OrigM.getNumElements();
> + if (Elements == 1 && !OrigM.getElement(0))
> + Elements = 0;
> + M.reserve(Elements + 1);
> + for (unsigned i = 0; i != Elements; ++i)
> + M.push_back(OrigM.getElement(i));
> + M.push_back(S);
> + setTypeArray(DIArray(MDNode::get(DbgNode->getContext(), M)));
> +}
> +
> /// \brief Set the containing type.
> void DICompositeType::setContainingType(DICompositeType ContainingType)
> {
> TrackingVH<MDNode> N(*this);
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
More information about the llvm-commits
mailing list