void ARMConstantPoolValue::AddSelectionDAGCSEId(FoldingSetNodeID &ID) { ID.AddPointer(CVal); ID.AddPointer(S); ID.AddInteger(LabelId); ID.AddInteger(PCAdjust); }
static unsigned node_hash(GepNode *N) { // Include everything except flags and parent. FoldingSetNodeID ID; ID.AddPointer(N->Idx); ID.AddPointer(N->PTy); return ID.ComputeHash(); }
/// Profile - Gather unique data for the object. /// void MachineMemOperand::Profile(FoldingSetNodeID &ID) const { ID.AddInteger(getOffset()); ID.AddInteger(Size); ID.AddPointer(getOpaqueValue()); ID.AddInteger(getFlags()); ID.AddInteger(getBaseAlignment()); }
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. // Note that if the operands are later nulled out, the node will be // removed from the uniquing map. for (unsigned i = 0, e = getNumOperands(); i != e; ++i) ID.AddPointer(getOperand(i)); }
MDNode *MDNode::getMDNode(LLVMContext &Context, ArrayRef<Value*> Vals, 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. // Note that if the operands are later nulled out, the node will be // removed from the uniquing map. FoldingSetNodeID ID; for (unsigned i = 0; i != Vals.size(); ++i) ID.AddPointer(Vals[i]); void *InsertPoint; MDNode *N = pImpl->MDNodeSet.FindNodeOrInsertPos(ID, InsertPoint); if (N || !Insert) return N; bool isFunctionLocal = false; switch (FL) { case FL_Unknown: for (unsigned i = 0; i != Vals.size(); ++i) { Value *V = Vals[i]; if (!V) continue; if (isFunctionLocalValue(V)) { isFunctionLocal = true; break; } } break; case FL_No: isFunctionLocal = false; break; case FL_Yes: isFunctionLocal = true; break; } // Coallocate space for the node and Operands together, then placement new. void *Ptr = malloc(sizeof(MDNode) + Vals.size() * sizeof(MDNodeOperand)); N = new (Ptr) MDNode(Context, Vals, isFunctionLocal); // Cache the operand hash. N->Hash = ID.ComputeHash(); // InsertPoint will have been set by the FindNodeOrInsertPos call. pImpl->MDNodeSet.InsertNode(N, InsertPoint); return N; }
bool LoopDependenceAnalysis::findOrInsertDependencePair(Value *A, Value *B, DependencePair *&P) { void *insertPos = 0; FoldingSetNodeID id; id.AddPointer(A); id.AddPointer(B); P = Pairs.FindNodeOrInsertPos(id, insertPos); if (P) return true; P = new (PairAllocator) DependencePair(id, A, B); Pairs.InsertNode(P, insertPos); return false; }
MDNode *MDNode::getMDNode(LLVMContext &Context, Value *const *Vals, unsigned NumVals, FunctionLocalness FL, bool Insert) { LLVMContextImpl *pImpl = Context.pImpl; 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; if (!Insert) return NULL; bool isFunctionLocal = false; switch (FL) { case FL_Unknown: for (unsigned i = 0; i != NumVals; ++i) { Value *V = Vals[i]; if (!V) continue; if (isa<Instruction>(V) || isa<Argument>(V) || isa<BasicBlock>(V) || (isa<MDNode>(V) && cast<MDNode>(V)->isFunctionLocal())) { isFunctionLocal = true; break; } } break; case FL_No: isFunctionLocal = false; break; case FL_Yes: isFunctionLocal = true; break; } // 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); // InsertPoint will have been set by the FindNodeOrInsertPos call. pImpl->MDNodeSet.InsertNode(N, InsertPoint); return N; }
/// Profile - Gather unique data for the object. /// void MachineMemOperand::Profile(FoldingSetNodeID &ID) const { ID.AddInteger(Offset); ID.AddInteger(Size); ID.AddPointer(V); ID.AddInteger(Flags); }
void MDNode::Profile(FoldingSetNodeID &ID) const { for (unsigned i = 0, e = getNumOperands(); i != e; ++i) ID.AddPointer(getOperand(i)); }
void ARMConstantPoolMBB::addSelectionDAGCSEId(FoldingSetNodeID &ID) { ID.AddPointer(MBB); ARMConstantPoolValue::addSelectionDAGCSEId(ID); }
void SuppressInlineDefensiveChecksVisitor::Profile(FoldingSetNodeID &ID) const { static int id = 0; ID.AddPointer(&id); ID.AddPointer(StartN); ID.Add(V); }
void SystemZConstantPoolValue::addSelectionDAGCSEId(FoldingSetNodeID &ID) { ID.AddPointer(GV); ID.AddInteger(Modifier); }
void ARMConstantPoolConstant::addSelectionDAGCSEId(FoldingSetNodeID &ID) { ID.AddPointer(CVal); for (const auto *GV : GVars) ID.AddPointer(GV); ARMConstantPoolValue::addSelectionDAGCSEId(ID); }
void MDNode::Profile(FoldingSetNodeID &ID) const { for (unsigned i = 0, e = getNumOperands(); i != e; ++i) ID.AddPointer(getOperand(i)); ID.AddBoolean(isFunctionLocal()); }
void Pointer::Profile(FoldingSetNodeID &ID, const Type *Ty, const Value *Val) { ID.Add(Ty); ID.AddPointer(Val); }