[llvm-commits] [llvm] r111995 - /llvm/trunk/lib/VMCore/Metadata.cpp
Chris Lattner
clattner at apple.com
Tue Aug 24 16:33:04 PDT 2010
On Aug 24, 2010, at 4:21 PM, Dan Gohman wrote:
> Author: djg
> Date: Tue Aug 24 18:21:12 2010
> New Revision: 111995
>
> URL: http://llvm.org/viewvc/llvm-project?rev=111995&view=rev
> Log:
> Don't include the is-function-local bit in the FoldingSetNodeID
> for MDNodes, since this information is effectively implied by
> the operands. This allow allows the code to avoid doing a
> recursive is-it-really-function-local check in some cases.
One trick with this: if the function local operand of a local md node drops to null, the node stays function local.
-Chris
>
> Modified:
> llvm/trunk/lib/VMCore/Metadata.cpp
>
> Modified: llvm/trunk/lib/VMCore/Metadata.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/VMCore/Metadata.cpp?rev=111995&r1=111994&r2=111995&view=diff
> ==============================================================================
> --- llvm/trunk/lib/VMCore/Metadata.cpp (original)
> +++ llvm/trunk/lib/VMCore/Metadata.cpp Tue Aug 24 18:21:12 2010
> @@ -187,6 +187,19 @@
> unsigned NumVals, FunctionLocalness FL,
> bool Insert) {
> LLVMContextImpl *pImpl = Context.pImpl;
> +
> + // Add all the operand pointers. Note that we don't have to add the
> + // isFunctionLocal bit because that's implied by the operands.
> + FoldingSetNodeID ID;
> + for (unsigned i = 0; i != NumVals; ++i)
> + ID.AddPointer(Vals[i]);
> +
> + void *InsertPoint;
> + MDNode *N = NULL;
> +
> + if ((N = pImpl->MDNodeSet.FindNodeOrInsertPos(ID, InsertPoint)))
> + return N;
> +
> bool isFunctionLocal = false;
> switch (FL) {
> case FL_Unknown:
> @@ -207,20 +220,6 @@
> break;
> }
>
> - FoldingSetNodeID ID;
> - for (unsigned i = 0; i != NumVals; ++i)
> - ID.AddPointer(Vals[i]);
> - ID.AddBoolean(isFunctionLocal);
> -
> - void *InsertPoint;
> - MDNode *N = NULL;
> -
> - if ((N = pImpl->MDNodeSet.FindNodeOrInsertPos(ID, InsertPoint)))
> - return N;
> -
> - if (!Insert)
> - return NULL;
> -
> // Coallocate space for the node and Operands together, then placement new.
> void *Ptr = malloc(sizeof(MDNode)+NumVals*sizeof(MDNodeOperand));
> N = new (Ptr) MDNode(Context, Vals, NumVals, isFunctionLocal);
> @@ -275,9 +274,10 @@
> }
>
> void MDNode::Profile(FoldingSetNodeID &ID) const {
> + // Add all the operand pointers. Note that we don't have to add the
> + // isFunctionLocal bit because that's implied by the operands.
> for (unsigned i = 0, e = getNumOperands(); i != e; ++i)
> ID.AddPointer(getOperand(i));
> - ID.AddBoolean(isFunctionLocal());
> }
>
> void MDNode::setIsNotUniqued() {
>
>
> _______________________________________________
> 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