Jlm
Public Types | Public Member Functions | Static Public Member Functions | Private Attributes | List of all members
jlm::rvsdg::RegionArgument Class Reference

Represents the argument of a region. More...

#include <region.hpp>

Inheritance diagram for jlm::rvsdg::RegionArgument:
Inheritance graph
[legend]
Collaboration diagram for jlm::rvsdg::RegionArgument:
Collaboration graph
[legend]

Public Types

typedef util::IntrusiveListAccessor< RegionArgument, &RegionArgument::structural_input_anchor_structural_input_accessor
 
- Public Types inherited from jlm::rvsdg::Output
using UsersList = Input::UsersList
 
using UsersRange = jlm::util::IteratorRange< UsersList::Iterator >
 
using UsersConstRange = jlm::util::IteratorRange< UsersList::ConstIterator >
 

Public Member Functions

 ~RegionArgument () noexcept override
 
 RegionArgument (rvsdg::Region *region, StructuralInput *input, std::shared_ptr< const rvsdg::Type > type)
 
 RegionArgument (const RegionArgument &)=delete
 
 RegionArgument (RegionArgument &&)=delete
 
RegionArgumentoperator= (const RegionArgument &)=delete
 
RegionArgumentoperator= (RegionArgument &&)=delete
 
std::string debug_string () const override
 
StructuralInputinput () const noexcept
 
virtual RegionArgumentCopy (Region &region, StructuralInput *input) const
 
- Public Member Functions inherited from jlm::rvsdg::Output
virtual ~Output () noexcept
 
 Output (const Output &)=delete
 
 Output (Output &&)=delete
 
Outputoperator= (const Output &)=delete
 
Outputoperator= (Output &&)=delete
 
size_t index () const noexcept
 
size_t nusers () const noexcept
 
bool IsDead () const noexcept
 
void divert_users (jlm::rvsdg::Output *new_origin)
 
template<typename F >
size_t divertUsersWhere (Output &newOrigin, const F &match)
 
rvsdg::InputSingleUser () noexcept
 
UsersRange Users ()
 
UsersConstRange Users () const
 
const std::shared_ptr< const rvsdg::Type > & Type () const noexcept
 
rvsdg::Regionregion () const noexcept
 
std::variant< Node *, Region * > GetOwner () const noexcept
 

Static Public Member Functions

static RegionArgumentCreate (rvsdg::Region &region, StructuralInput *input, std::shared_ptr< const rvsdg::Type > type)
 Creates region entry argument. More...
 

Private Attributes

util::IntrusiveListAnchor< RegionArgumentstructural_input_anchor_ {}
 
StructuralInputinput_
 

Additional Inherited Members

- Protected Member Functions inherited from jlm::rvsdg::Output
 Output (Node &owner, std::shared_ptr< const rvsdg::Type > type)
 
 Output (Region *owner, std::shared_ptr< const rvsdg::Type > type)
 

Detailed Description

Represents the argument of a region.

Region arguments represent the initial values of the region's acyclic graph. These values are mapped to the arguments throughout the execution, and the concrete semantics of this mapping depends on the structural node the region is part of. A region argument is either linked with a StructuralInput or is a standalone argument.

Definition at line 40 of file region.hpp.

Member Typedef Documentation

◆ structural_input_accessor

Definition at line 46 of file region.hpp.

Constructor & Destructor Documentation

◆ ~RegionArgument()

jlm::rvsdg::RegionArgument::~RegionArgument ( )
overridenoexcept

Definition at line 22 of file region.cpp.

◆ RegionArgument() [1/3]

jlm::rvsdg::RegionArgument::RegionArgument ( rvsdg::Region region,
StructuralInput input,
std::shared_ptr< const rvsdg::Type type 
)

Definition at line 28 of file region.cpp.

◆ RegionArgument() [2/3]

jlm::rvsdg::RegionArgument::RegionArgument ( const RegionArgument )
delete

◆ RegionArgument() [3/3]

jlm::rvsdg::RegionArgument::RegionArgument ( RegionArgument &&  )
delete

Member Function Documentation

◆ Copy()

RegionArgument & jlm::rvsdg::RegionArgument::Copy ( Region region,
StructuralInput input 
) const
virtual

Creates a copy of the argument in region with the structural_input input.

Parameters
regionThe region where the copy of the argument is created in.
inputThe structural_input to the argument, if any.
Returns
A reference to the copied argument.

Reimplemented in jlm::llvm::LlvmGraphImport, jlm::hls::BackEdgeArgument, jlm::hls::EntryArgument, and jlm::rvsdg::GraphImport.

Definition at line 56 of file region.cpp.

◆ Create()

RegionArgument & jlm::rvsdg::RegionArgument::Create ( rvsdg::Region region,
StructuralInput input,
std::shared_ptr< const rvsdg::Type type 
)
static

Creates region entry argument.

Parameters
regionRegion to create argument for.
input(optional) input of parent node associated with this argument (deprecated, will be removed soon).
typeResult type.
Returns
Reference to the created argument.

Creates an argument and registers it with the given region.

Definition at line 62 of file region.cpp.

◆ debug_string()

std::string jlm::rvsdg::RegionArgument::debug_string ( ) const
overridevirtual

Reimplemented from jlm::rvsdg::Output.

Definition at line 50 of file region.cpp.

◆ input()

StructuralInput* jlm::rvsdg::RegionArgument::input ( ) const
inlinenoexcept

Definition at line 69 of file region.hpp.

◆ operator=() [1/2]

RegionArgument& jlm::rvsdg::RegionArgument::operator= ( const RegionArgument )
delete

◆ operator=() [2/2]

RegionArgument& jlm::rvsdg::RegionArgument::operator= ( RegionArgument &&  )
delete

Member Data Documentation

◆ input_

StructuralInput* jlm::rvsdg::RegionArgument::input_
private

Definition at line 107 of file region.hpp.

◆ structural_input_anchor_

util::IntrusiveListAnchor<RegionArgument> jlm::rvsdg::RegionArgument::structural_input_anchor_ {}
private

Definition at line 42 of file region.hpp.


The documentation for this class was generated from the following files: