Lines Matching full:partition
122 void CompileOnDemandLayer::setPartitionFunction(PartitionFunction Partition) { in setPartitionFunction() argument
123 this->Partition = std::move(Partition); in setPartitionFunction()
227 void CompileOnDemandLayer::expandPartition(GlobalValueSet &Partition) { in expandPartition() argument
228 // Expands the partition to ensure the following rules hold: in expandPartition()
229 // (1) If any alias is in the partition, its aliasee is also in the partition. in expandPartition()
230 // (2) If any aliasee is in the partition, its aliases are also in the in expandPartition()
232 // (3) If any global variable is in the partition then all global variables in expandPartition()
233 // are in the partition. in expandPartition()
234 assert(!Partition.empty() && "Unexpected empty partition"); in expandPartition()
236 const Module &M = *(*Partition.begin())->getParent(); in expandPartition()
240 for (const auto *GV : Partition) in expandPartition()
248 if (Partition.count(cast<GlobalValue>(A.getAliasee()))) in expandPartition()
256 Partition.insert(GV); in expandPartition()
282 /// Perform partitioning with the context lock held, since the partition in emitPartition()
283 /// function is allowed to access the globals to compute the partition. in emitPartition()
285 TSM.withModuleDo([&](Module &M) { return Partition(RequestedGVs); }); in emitPartition()
287 // Take a 'None' partition to mean the whole module (as opposed to an empty in emitPartition()
288 // partition, which means "materialize nothing"). Emit the whole module in emitPartition()
296 // If the partition is empty, return the whole module to the symbol table. in emitPartition()
311 // Ok -- we actually need to partition the symbols. Promote the symbol in emitPartition()
312 // linkages/names, expand the partition to include any required symbols in emitPartition()
313 // (i.e. symbols that can't be separated from our partition), and in emitPartition()
314 // then extract the partition. in emitPartition()