20 return F->hasExactDefinition() &&
F->hasLocalLinkage() &&
21 !
F->hasAddressTaken();
25 return F->hasExactDefinition() && !
F->hasFnAttribute(Attribute::Naked);
35 if (auto *Store = dyn_cast<StoreInst>(U))
36 return Store->getValueOperand() != GV && !Store->isVolatile() &&
37 Store->getValueOperand()->getType() == GV->getValueType();
38 if (auto *Load = dyn_cast<LoadInst>(U))
39 return !Load->isVolatile() && Load->getType() == GV->getValueType();
bool hasLocalLinkage() const
bool isConstant() const
If the value is a global constant, its value is immutable throughout the runtime execution of the pro...
bool hasDefinitiveInitializer() const
hasDefinitiveInitializer - Whether the global variable has an initializer, and any other instances of...
iterator_range< user_iterator > users()
This is an optimization pass for GlobalISel generic memory operations.
bool all_of(R &&range, UnaryPredicate P)
Provide wrappers to std::all_of which take ranges instead of having to pass begin/end explicitly.
LLVM_ABI bool canTrackGlobalVariableInterprocedurally(GlobalVariable *GV)
Determine if the value maintained in the given global variable can be tracked interprocedurally.
LLVM_ABI bool canTrackReturnsInterprocedurally(Function *F)
Determine if the values of the given function's returns can be tracked interprocedurally.
LLVM_ABI bool canTrackArgumentsInterprocedurally(Function *F)
Determine if the values of the given function's arguments can be tracked interprocedurally.