llvm/llvm/include/llvm/Analysis/AliasSetTracker.h

//===- llvm/Analysis/AliasSetTracker.h - Build Alias Sets -------*- 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
//
//===----------------------------------------------------------------------===//
//
// This file defines two classes: AliasSetTracker and AliasSet. These interfaces
// are used to classify a collection of memory locations into a maximal number
// of disjoint sets. Each AliasSet object constructed by the AliasSetTracker
// object refers to memory disjoint from the other sets.
//
// An AliasSetTracker can only be used on immutable IR.
//
//===----------------------------------------------------------------------===//

#ifndef LLVM_ANALYSIS_ALIASSETTRACKER_H
#define LLVM_ANALYSIS_ALIASSETTRACKER_H

#include "llvm/ADT/DenseMap.h"
#include "llvm/ADT/SmallVector.h"
#include "llvm/ADT/ilist.h"
#include "llvm/ADT/ilist_node.h"
#include "llvm/Analysis/MemoryLocation.h"
#include "llvm/IR/PassManager.h"
#include "llvm/IR/ValueHandle.h"
#include <cassert>
#include <vector>

namespace llvm {

class AliasResult;
class AliasSetTracker;
class AnyMemSetInst;
class AnyMemTransferInst;
class BasicBlock;
class BatchAAResults;
class Function;
class Instruction;
class StoreInst;
class LoadInst;
enum class ModRefInfo : uint8_t;
class raw_ostream;
class VAArgInst;
class Value;

class AliasSet : public ilist_node<AliasSet> {};

inline raw_ostream& operator<<(raw_ostream &OS, const AliasSet &AS) {}

class AliasSetTracker {};

inline raw_ostream& operator<<(raw_ostream &OS, const AliasSetTracker &AST) {}

class AliasSetsPrinterPass : public PassInfoMixin<AliasSetsPrinterPass> {};

} // end namespace llvm

#endif // LLVM_ANALYSIS_ALIASSETTRACKER_H