diff options
| author | 2020-08-03 15:06:44 +0000 | |
|---|---|---|
| committer | 2020-08-03 15:06:44 +0000 | |
| commit | b64793999546ed8adebaeebd9d8345d18db8927d (patch) | |
| tree | 4357c27b561d73b0e089727c6ed659f2ceff5f47 /gnu/llvm/lib/Analysis/ValueLatticeUtils.cpp | |
| parent | Add support for UTF-8 DISPLAY-HINTs with octet length. For now only (diff) | |
| download | wireguard-openbsd-b64793999546ed8adebaeebd9d8345d18db8927d.tar.xz wireguard-openbsd-b64793999546ed8adebaeebd9d8345d18db8927d.zip | |
Remove LLVM 8.0.1 files.
Diffstat (limited to 'gnu/llvm/lib/Analysis/ValueLatticeUtils.cpp')
| -rw-r--r-- | gnu/llvm/lib/Analysis/ValueLatticeUtils.cpp | 44 |
1 files changed, 0 insertions, 44 deletions
diff --git a/gnu/llvm/lib/Analysis/ValueLatticeUtils.cpp b/gnu/llvm/lib/Analysis/ValueLatticeUtils.cpp deleted file mode 100644 index 22c9de4fe94..00000000000 --- a/gnu/llvm/lib/Analysis/ValueLatticeUtils.cpp +++ /dev/null @@ -1,44 +0,0 @@ -//===-- ValueLatticeUtils.cpp - Utils for solving lattices ------*- C++ -*-===// -// -// The LLVM Compiler Infrastructure -// -// This file is distributed under the University of Illinois Open Source -// License. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// -// -// This file implements common functions useful for performing data-flow -// analyses that propagate values across function boundaries. -// -//===----------------------------------------------------------------------===// - -#include "llvm/Analysis/ValueLatticeUtils.h" -#include "llvm/IR/GlobalVariable.h" -#include "llvm/IR/Instructions.h" -using namespace llvm; - -bool llvm::canTrackArgumentsInterprocedurally(Function *F) { - return F->hasLocalLinkage() && !F->hasAddressTaken(); -} - -bool llvm::canTrackReturnsInterprocedurally(Function *F) { - return F->hasExactDefinition() && !F->hasFnAttribute(Attribute::Naked); -} - -bool llvm::canTrackGlobalVariableInterprocedurally(GlobalVariable *GV) { - if (GV->isConstant() || !GV->hasLocalLinkage() || - !GV->hasDefinitiveInitializer()) - return false; - return !any_of(GV->users(), [&](User *U) { - if (auto *Store = dyn_cast<StoreInst>(U)) { - if (Store->getValueOperand() == GV || Store->isVolatile()) - return true; - } else if (auto *Load = dyn_cast<LoadInst>(U)) { - if (Load->isVolatile()) - return true; - } else { - return true; - } - return false; - }); -} |
