//=- IslNodeBuilder.cpp - Translate an isl AST into a LLVM-IR AST -*- 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 contains the IslNodeBuilder, a class to translate an isl AST into // a LLVM-IR AST. // //===----------------------------------------------------------------------===// #ifndef POLLY_ISLNODEBUILDER_H #define POLLY_ISLNODEBUILDER_H #include "polly/CodeGen/BlockGenerators.h" #include "polly/CodeGen/IslExprBuilder.h" #include "polly/ScopDetectionDiagnostic.h" #include "llvm/ADT/ArrayRef.h" #include "llvm/ADT/SmallSet.h" #include "llvm/IR/InstrTypes.h" #include "isl/ctx.h" #include "isl/isl-noexceptions.h" namespace polly { LoopInfo; SmallSet; struct InvariantEquivClassTy; struct SubtreeReferences { … }; /// Extract the out-of-scop values and SCEVs referenced from a ScopStmt. /// /// This includes the SCEVUnknowns referenced by the SCEVs used in the /// statement and the base pointers of the memory accesses. For scalar /// statements we force the generation of alloca memory locations and list /// these locations in the set of out-of-scop values as well. /// /// We also collect an isl::space that includes all parameter dimensions /// used in the statement's memory accesses, in case the ParamSpace pointer /// is non-null. /// /// @param Stmt The statement for which to extract the information. /// @param UserPtr A void pointer that can be casted to a /// SubtreeReferences structure. /// @param CreateScalarRefs Should the result include allocas of scalar /// references? void addReferencesFromStmt(ScopStmt *Stmt, void *UserPtr, bool CreateScalarRefs = true); class IslNodeBuilder { … }; } // namespace polly #endif // POLLY_ISLNODEBUILDER_H