Home | History | Annotate | Download | only in IPO

Lines Matching refs:Loads

321   // We can only promote this argument if all of the uses are loads, or are GEP
329 // In the former case, invalid loads can happen, but would have happened
330 // anyway, in the latter case, invalid loads won't happen. This prevents us
349 // First, iterate the entry block and mark loads of (geps of) arguments as
361 // This load actually loads (part of) Arg? Check the indices then.
377 // Direct loads are equivalent to a GEP with a single 0 index.
383 // not (GEP+)loads, or any (GEP+)loads that are not safe to promote.
384 SmallVector<LoadInst*, 16> Loads;
390 // Don't hack volatile/atomic loads
392 Loads.push_back(LI);
393 // Direct loads are equivalent to a GEP with a zero index and then a load.
418 // Don't hack volatile/atomic loads
420 Loads.push_back(LI);
429 // Now, see if it is safe to promote this load / loads of this GEP. Loading
450 if (Loads.empty()) return true; // No users, this is a dead argument.
463 for (unsigned i = 0, e = Loads.size(); i != e; ++i) {
466 LoadInst *Load = Loads[i];
518 // We need to keep the original loads for each argument and the elements
557 // Okay, this is being promoted. This means that the only uses are loads
558 // or GEPs which are only used by loads
561 // (where direct loads are tracked as no indices).
568 // Since loads will only have a single operand, and GEPs only a single
569 // non-index operand, this will record direct loads without any indices,
570 // and gep+loads with the GEP indices.
574 // GEPs with a single 0 index can be merged with direct loads
658 // Loop over the operands, inserting GEP and loads in the caller as
687 // Non-dead argument: insert GEPs and loads as appropriate.
843 // instructions (or GEPs with only load users), and all loads should be
865 // GEPs with a single 0 index can be merged with direct loads