6 #ifndef JLM_LLVM_IR_RVSDGMODULE_HPP
7 #define JLM_LLVM_IR_RVSDGMODULE_HPP
25 std::shared_ptr<const rvsdg::Type> valueType,
26 std::shared_ptr<const rvsdg::Type> importedType,
30 : rvsdg::
GraphImport(graph, importedType, std::move(name)),
57 [[nodiscard]]
const std::shared_ptr<const jlm::rvsdg::Type> &
71 [[nodiscard]]
const std::shared_ptr<const jlm::rvsdg::Type> &
83 std::shared_ptr<const rvsdg::Type> valueType,
84 std::shared_ptr<const rvsdg::Type> importedType,
92 std::move(importedType),
115 LlvmRvsdgModule(util::FilePath sourceFileName, std::
string targetTriple, std::
string dataLayout)
123 std::string targetTriple,
124 std::string dataLayout,
125 std::unique_ptr<rvsdg::Graph> rvsdg)
126 :
RvsdgModule(std::move(sourceFileName), std::move(rvsdg)),
141 std::unique_ptr<RvsdgModule>
142 copy()
const override;
150 [[nodiscard]]
const std::string &
156 [[nodiscard]]
const std::string &
162 static std::unique_ptr<LlvmRvsdgModule>
165 const std::string & targetTriple,
166 const std::string & dataLayout)
168 return std::make_unique<LlvmRvsdgModule>(sourceFileName, targetTriple, dataLayout);
const std::shared_ptr< const jlm::rvsdg::Type > & ImportedType() const noexcept
const std::shared_ptr< const jlm::rvsdg::Type > & ValueType() const noexcept
bool isConstant() const noexcept
std::shared_ptr< const rvsdg::Type > ValueType_
const Linkage & linkage() const noexcept
std::shared_ptr< const rvsdg::Type > ImportedType_
static LlvmGraphImport & Create(rvsdg::Graph &graph, std::shared_ptr< const rvsdg::Type > valueType, std::shared_ptr< const rvsdg::Type > importedType, std::string name, Linkage linkage, bool isConstant=false)
LlvmGraphImport & Copy(rvsdg::Region ®ion, rvsdg::StructuralInput *input) const override
LlvmGraphImport(rvsdg::Graph &graph, std::shared_ptr< const rvsdg::Type > valueType, std::shared_ptr< const rvsdg::Type > importedType, std::string name, Linkage linkage, bool isConstant)
const util::FilePath & SourceFileName() const noexcept
const std::string & TargetTriple() const noexcept
~LlvmRvsdgModule() noexcept override=default
LlvmRvsdgModule & operator=(const LlvmRvsdgModule &)=delete
static std::unique_ptr< LlvmRvsdgModule > Create(const util::FilePath &sourceFileName, const std::string &targetTriple, const std::string &dataLayout)
LlvmRvsdgModule(LlvmRvsdgModule &&)=delete
LlvmRvsdgModule & operator=(LlvmRvsdgModule &&)=delete
std::string TargetTriple_
LlvmRvsdgModule(const LlvmRvsdgModule &)=delete
std::unique_ptr< RvsdgModule > copy() const override
const std::string & DataLayout() const noexcept
LlvmRvsdgModule(util::FilePath sourceFileName, std::string targetTriple, std::string dataLayout, std::unique_ptr< rvsdg::Graph > rvsdg)
GraphImport(Graph &graph, std::shared_ptr< const rvsdg::Type > type, std::string name)
Region & GetRootRegion() const noexcept
rvsdg::Region * region() const noexcept
StructuralInput * input() const noexcept
Represent acyclic RVSDG subgraphs.
RegionArgument & addArgument(std::unique_ptr< RegionArgument > argument)
const std::optional< util::FilePath > & SourceFilePath() const noexcept
Global memory state passed between functions.