13#ifndef FORTRAN_OPTIMIZER_CODEGEN_TBAABUILDER_H
14#define FORTRAN_OPTIMIZER_CODEGEN_TBAABUILDER_H
16#include "flang/Optimizer/Analysis/TBAAForest.h"
17#include "mlir/Dialect/LLVMIR/LLVMDialect.h"
172 bool forceUnifiedTree =
false);
178 void attachTBAATag(mlir::LLVM::AliasAnalysisOpInterface op,
179 mlir::Type baseFIRType, mlir::Type accessFIRType,
180 mlir::LLVM::GEPOp gep);
185 mlir::LLVM::TBAATagAttr
186 getAccessTag(mlir::LLVM::TBAATypeDescriptorAttr baseTypeDesc,
187 mlir::LLVM::TBAATypeDescriptorAttr accessTypeDesc,
192 mlir::LLVM::TBAATagAttr getAnyBoxAccessTag(mlir::LLVM::LLVMFuncOp func);
195 mlir::LLVM::TBAATagAttr getAnyDataAccessTag(mlir::LLVM::LLVMFuncOp func);
198 mlir::LLVM::TBAATagAttr getAnyAccessTag(mlir::LLVM::LLVMFuncOp func);
204 mlir::LLVM::TBAATagAttr getBoxAccessTag(mlir::Type baseFIRType,
205 mlir::Type accessFIRType,
206 mlir::LLVM::GEPOp gep,
207 mlir::LLVM::LLVMFuncOp func);
213 mlir::LLVM::TBAATagAttr getDataAccessTag(mlir::Type baseFIRType,
214 mlir::Type accessFIRType,
215 mlir::LLVM::GEPOp gep,
216 mlir::LLVM::LLVMFuncOp func);
223 unsigned tagAttachmentCounter = 0;
227 llvm::DenseMap<mlir::Type, mlir::LLVM::TBAATypeDescriptorAttr> typeDescMap;
232 std::tuple<mlir::LLVM::TBAANodeAttr, mlir::LLVM::TBAANodeAttr, int64_t>,
233 mlir::LLVM::TBAATagAttr>
Definition: TBAABuilder.h:168
TBAABuilder(mlir::MLIRContext *context, bool applyTBAA, bool forceUnifiedTree=false)
if forceUnifiedTree is true, functions will not have different TBAA trees
Definition: TBAAForest.h:78
Definition: AbstractConverter.h:31