//===- GlobalsModRef.h - Simple Mod/Ref AA for Globals ----------*- 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 a simple mod/ref and alias analysis over globals. /// //===----------------------------------------------------------------------===// #ifndef LLVM_ANALYSIS_GLOBALSMODREF_H #define LLVM_ANALYSIS_GLOBALSMODREF_H #include "llvm/Analysis/AliasAnalysis.h" #include "llvm/IR/PassManager.h" #include "llvm/IR/ValueHandle.h" #include "llvm/Pass.h" #include <list> namespace llvm { class CallGraph; class Function; /// An alias analysis result set for globals. /// /// This focuses on handling aliasing properties of globals and interprocedural /// function call mod/ref information. class GlobalsAAResult : public AAResultBase { … }; /// Analysis pass providing a never-invalidated alias analysis result. class GlobalsAA : public AnalysisInfoMixin<GlobalsAA> { … }; struct RecomputeGlobalsAAPass : PassInfoMixin<RecomputeGlobalsAAPass> { … }; /// Legacy wrapper pass to provide the GlobalsAAResult object. class GlobalsAAWrapperPass : public ModulePass { … }; //===--------------------------------------------------------------------===// // // createGlobalsAAWrapperPass - This pass provides alias and mod/ref info for // global values that do not have their addresses taken. // ModulePass *createGlobalsAAWrapperPass(); } #endif