diff options
Diffstat (limited to 'llvm/lib/Analysis/ScopedNoAliasAA.cpp')
-rw-r--r-- | llvm/lib/Analysis/ScopedNoAliasAA.cpp | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/llvm/lib/Analysis/ScopedNoAliasAA.cpp b/llvm/lib/Analysis/ScopedNoAliasAA.cpp index 833c6e09f6f..ada053cfc16 100644 --- a/llvm/lib/Analysis/ScopedNoAliasAA.cpp +++ b/llvm/lib/Analysis/ScopedNoAliasAA.cpp @@ -34,11 +34,12 @@ #include "llvm/Analysis/ScopedNoAliasAA.h" #include "llvm/ADT/SmallPtrSet.h" -#include "llvm/IR/Constants.h" +#include "llvm/Analysis/MemoryLocation.h" +#include "llvm/IR/Instruction.h" #include "llvm/IR/LLVMContext.h" #include "llvm/IR/Metadata.h" -#include "llvm/IR/Module.h" #include "llvm/Pass.h" +#include "llvm/Support/Casting.h" #include "llvm/Support/CommandLine.h" using namespace llvm; @@ -50,14 +51,15 @@ static cl::opt<bool> EnableScopedNoAlias("enable-scoped-noalias", cl::init(true)); namespace { + /// This is a simple wrapper around an MDNode which provides a higher-level /// interface by hiding the details of how alias analysis information is encoded /// in its operands. class AliasScopeNode { - const MDNode *Node; + const MDNode *Node = nullptr; public: - AliasScopeNode() : Node(nullptr) {} + AliasScopeNode() = default; explicit AliasScopeNode(const MDNode *N) : Node(N) {} /// Get the MDNode for this AliasScopeNode. @@ -70,7 +72,8 @@ public: return dyn_cast_or_null<MDNode>(Node->getOperand(1)); } }; -} // end of anonymous namespace + +} // end anonymous namespace AliasResult ScopedNoAliasAAResult::alias(const MemoryLocation &LocA, const MemoryLocation &LocB) { @@ -181,6 +184,7 @@ ScopedNoAliasAAResult ScopedNoAliasAA::run(Function &F, } char ScopedNoAliasAAWrapperPass::ID = 0; + INITIALIZE_PASS(ScopedNoAliasAAWrapperPass, "scoped-noalias", "Scoped NoAlias Alias Analysis", false, true) |