summaryrefslogtreecommitdiff
path: root/lib/Analysis/ValueTracking.cpp
diff options
context:
space:
mode:
authorNick Lewycky <nicholas@mxc.ca>2011-06-27 04:20:45 +0000
committerNick Lewycky <nicholas@mxc.ca>2011-06-27 04:20:45 +0000
commit99e0b2a8df7e3a49c0e1edd250d17604fe2fb21c (patch)
tree42939c1bdab00ce2572d390c2a569510209ebdc4 /lib/Analysis/ValueTracking.cpp
parent1baeb006d2bb74dd9f6fa633fcc53e3b1ecbbf35 (diff)
downloadllvm-99e0b2a8df7e3a49c0e1edd250d17604fe2fb21c.tar.gz
llvm-99e0b2a8df7e3a49c0e1edd250d17604fe2fb21c.tar.bz2
llvm-99e0b2a8df7e3a49c0e1edd250d17604fe2fb21c.tar.xz
Move onlyUsedByLifetimeMarkers to ValueTracking so that it can be used by other
passes as well. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133904 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Analysis/ValueTracking.cpp')
-rw-r--r--lib/Analysis/ValueTracking.cpp16
1 files changed, 16 insertions, 0 deletions
diff --git a/lib/Analysis/ValueTracking.cpp b/lib/Analysis/ValueTracking.cpp
index dab5aebd6c..130e3ced42 100644
--- a/lib/Analysis/ValueTracking.cpp
+++ b/lib/Analysis/ValueTracking.cpp
@@ -1783,3 +1783,19 @@ llvm::GetUnderlyingObject(Value *V, const TargetData *TD, unsigned MaxLookup) {
}
return V;
}
+
+/// onlyUsedByLifetimeMarkers - Return true if the only users of this pointer
+/// are lifetime markers.
+///
+bool llvm::onlyUsedByLifetimeMarkers(const Value *V) {
+ for (Value::const_use_iterator UI = V->use_begin(), UE = V->use_end();
+ UI != UE; ++UI) {
+ const IntrinsicInst *II = dyn_cast<IntrinsicInst>(*UI);
+ if (!II) return false;
+
+ if (II->getIntrinsicID() != Intrinsic::lifetime_start &&
+ II->getIntrinsicID() != Intrinsic::lifetime_end)
+ return false;
+ }
+ return true;
+}