Move isKnownNonNull out of AliasAnalysis.h and into ValueTracking.cpp since
authorDan Gohman <dan433584@gmail.com>
Thu, 31 Jan 2013 02:40:59 +0000 (02:40 +0000)
committerDan Gohman <dan433584@gmail.com>
Thu, 31 Jan 2013 02:40:59 +0000 (02:40 +0000)
it isn't really an AliasAnalysis concept, and ValueTracking has similar things
that it could plausibly share code with some day.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174027 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/Analysis/AliasAnalysis.h
include/llvm/Analysis/ValueTracking.h
lib/Analysis/AliasAnalysis.cpp
lib/Analysis/LazyValueInfo.cpp
lib/Analysis/ValueTracking.cpp

index 72fc950b604d4e5964a1d59c4915a328560b926c..d703f21c021c66dc731ba9f1d6db1420649b5431 100644 (file)
@@ -593,11 +593,6 @@ bool isNoAliasCall(const Value *V);
 ///
 bool isIdentifiedObject(const Value *V);
 
-/// isKnownNonNull - Return true if this pointer couldn't possibly be null by
-/// its definition.  This returns true for allocas, non-extern-weak globals and
-/// byval arguments.
-bool isKnownNonNull(const Value *V);
-
 } // End llvm namespace
 
 #endif
index b5b8bfe590142c1d22d744201f5fde52da004485..3775ec9f07aa8dc77bc4b68073d5c87e01ebc22a 100644 (file)
@@ -183,6 +183,11 @@ namespace llvm {
   bool isSafeToSpeculativelyExecute(const Value *V,
                                     const DataLayout *TD = 0);
 
+  /// isKnownNonNull - Return true if this pointer couldn't possibly be null by
+  /// its definition.  This returns true for allocas, non-extern-weak globals
+  /// and byval arguments.
+  bool isKnownNonNull(const Value *V);
+
 } // end namespace llvm
 
 #endif
index f32bd706982141bb44f635df87b7f47f07d8ecb2..210b80ab63ef7b2a1f5b89d79ac6d1e38ea841b2 100644 (file)
@@ -555,19 +555,3 @@ bool llvm::isIdentifiedObject(const Value *V) {
     return A->hasNoAliasAttr() || A->hasByValAttr();
   return false;
 }
-
-/// isKnownNonNull - Return true if we know that the specified value is never
-/// null.
-bool llvm::isKnownNonNull(const Value *V) {
-  // Alloca never returns null, malloc might.
-  if (isa<AllocaInst>(V)) return true;
-
-  // A byval argument is never null.
-  if (const Argument *A = dyn_cast<Argument>(V))
-    return A->hasByValAttr();
-
-  // Global values are not null unless extern weak.
-  if (const GlobalValue *GV = dyn_cast<GlobalValue>(V))
-    return !GV->hasExternalWeakLinkage();
-  return false;
-}
index 1c94d101d53cf0225cab5c22093b9323a9f6fb0d..66b5e852c02f5efe961314c20338b67b41ac9c15 100644 (file)
@@ -16,7 +16,6 @@
 #include "llvm/Analysis/LazyValueInfo.h"
 #include "llvm/ADT/DenseSet.h"
 #include "llvm/ADT/STLExtras.h"
-#include "llvm/Analysis/AliasAnalysis.h"
 #include "llvm/Analysis/ConstantFolding.h"
 #include "llvm/Analysis/ValueTracking.h"
 #include "llvm/IR/Constants.h"
index 473ebc86174d9ef58119dec40ff663129e7e321c..8e3994e8f52079b511bbf2e4aacf8dfc9382651e 100644 (file)
@@ -2014,3 +2014,19 @@ bool llvm::isSafeToSpeculativelyExecute(const Value *V,
     return false; // Misc instructions which have effects
   }
 }
+
+/// isKnownNonNull - Return true if we know that the specified value is never
+/// null.
+bool llvm::isKnownNonNull(const Value *V) {
+  // Alloca never returns null, malloc might.
+  if (isa<AllocaInst>(V)) return true;
+
+  // A byval argument is never null.
+  if (const Argument *A = dyn_cast<Argument>(V))
+    return A->hasByValAttr();
+
+  // Global values are not null unless extern weak.
+  if (const GlobalValue *GV = dyn_cast<GlobalValue>(V))
+    return !GV->hasExternalWeakLinkage();
+  return false;
+}