//===- BasicAliasAnalysis.h - Stateless, local Alias Analysis ---*- C++ -*-===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// /// \file /// This is the interface for LLVM's primary stateless and local alias analysis. /// //===----------------------------------------------------------------------===// #ifndef LLVM_ANALYSIS_BASICALIASANALYSIS_H #define LLVM_ANALYSIS_BASICALIASANALYSIS_H #include "llvm/ADT/SmallPtrSet.h" #include "llvm/Analysis/AliasAnalysis.h" #include "llvm/IR/PassManager.h" #include "llvm/Pass.h" #include <memory> #include <utility> namespace llvm { class AssumptionCache; class DataLayout; class DominatorTree; class Function; class GEPOperator; class PHINode; class SelectInst; class TargetLibraryInfo; class Value; /// This is the AA result object for the basic, local, and stateless alias /// analysis. It implements the AA query interface in an entirely stateless /// manner. As one consequence, it is never invalidated due to IR changes. /// While it does retain some storage, that is used as an optimization and not /// to preserve information from query to query. However it does retain handles /// to various other analyses and must be recomputed when those analyses are. class BasicAAResult : public AAResultBase { … }; /// Analysis pass providing a never-invalidated alias analysis result. class BasicAA : public AnalysisInfoMixin<BasicAA> { … }; /// Legacy wrapper pass to provide the BasicAAResult object. class BasicAAWrapperPass : public FunctionPass { … }; FunctionPass *createBasicAAWrapperPass(); } // end namespace llvm #endif // LLVM_ANALYSIS_BASICALIASANALYSIS_H