1 //===- PtrUseVisitor.cpp - InstVisitors over a pointers uses --------------===//
3 // The LLVM Compiler Infrastructure
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
8 //===----------------------------------------------------------------------===//
11 /// Implementation of the pointer use visitors.
13 //===----------------------------------------------------------------------===//
15 #include "llvm/Analysis/PtrUseVisitor.h"
16 #include "llvm/IR/Instruction.h"
17 #include "llvm/IR/Instructions.h"
22 void detail::PtrUseVisitorBase::enqueueUsers(Instruction
&I
) {
23 for (Use
&U
: I
.uses()) {
24 if (VisitedUses
.insert(&U
).second
) {
26 UseToVisit::UseAndIsOffsetKnownPair(&U
, IsOffsetKnown
),
29 Worklist
.push_back(std::move(NewU
));
34 bool detail::PtrUseVisitorBase::adjustOffsetForGEP(GetElementPtrInst
&GEPI
) {
38 return GEPI
.accumulateConstantOffset(DL
, Offset
);