|
Jlm
|
#include <GetElementPtr.hpp>


Public Member Functions | |
| ~GetElementPtrOperation () noexcept override | |
| GetElementPtrOperation (const std::vector< std::shared_ptr< const rvsdg::BitType >> &indexTypes, std::shared_ptr< const rvsdg::Type > pointeeType) | |
| GetElementPtrOperation (const GetElementPtrOperation &other)=default | |
| GetElementPtrOperation (GetElementPtrOperation &&other) noexcept=default | |
| bool | operator== (const Operation &other) const noexcept override |
| std::string | debug_string () const override |
| std::unique_ptr< Operation > | copy () const override |
| const rvsdg::Type & | getPointeeType () const noexcept |
Public Member Functions inherited from jlm::rvsdg::SimpleOperation | |
| ~SimpleOperation () noexcept override | |
| SimpleOperation (std::vector< std::shared_ptr< const jlm::rvsdg::Type >> operands, std::vector< std::shared_ptr< const jlm::rvsdg::Type >> results) | |
| size_t | narguments () const noexcept |
| const std::shared_ptr< const rvsdg::Type > & | argument (size_t index) const noexcept |
| size_t | nresults () const noexcept |
| const std::shared_ptr< const rvsdg::Type > & | result (size_t index) const noexcept |
Public Member Functions inherited from jlm::rvsdg::Operation | |
| virtual | ~Operation () noexcept |
| virtual bool | operator== (const Operation &other) const noexcept=0 |
| bool | operator!= (const Operation &other) const noexcept |
Static Public Member Functions | |
| static std::optional< std::vector< uint64_t > > | tryGetConstantIndices (const rvsdg::Node &node) noexcept |
| static rvsdg::Node::InputConstIteratorRange | indices (const rvsdg::Node &node) noexcept |
| static size_t | numIndices (const rvsdg::Node &node) noexcept |
| static rvsdg::Input & | getBaseAddressInput (rvsdg::Node &node) |
| static const rvsdg::Input & | getBaseAddressInput (const rvsdg::Node &node) |
| static std::unique_ptr< ThreeAddressCode > | createTAC (const Variable *baseAddress, const std::vector< const Variable * > &offsets, std::shared_ptr< const rvsdg::Type > pointeeType) |
| static rvsdg::SimpleNode & | createNode (rvsdg::Output &baseAddress, const std::vector< rvsdg::Output * > &indices, std::shared_ptr< const rvsdg::Type > pointeeType) |
| static rvsdg::Output * | create (rvsdg::Output *baseAddress, const std::vector< rvsdg::Output * > &indices, std::shared_ptr< const rvsdg::Type > pointeeType) |
Static Private Member Functions | |
| static void | checkPointerType (const rvsdg::Type &type) |
| template<class T > | |
| static std::vector< std::shared_ptr< const rvsdg::BitType > > | checkAndExtractIndexTypes (const std::vector< T * > &indices) |
| static std::vector< std::shared_ptr< const rvsdg::Type > > | createOperandTypes (const std::vector< std::shared_ptr< const rvsdg::BitType >> &indexTypes) |
Private Attributes | |
| std::shared_ptr< const rvsdg::Type > | pointeeType_ |
Represents LLVM's getelementptr instruction.
See LLVM Language Reference Manual for more details.
FIXME: We currently do not support vector of pointers for the baseAddress.
FIXME: We should type check that pointeeType and the number/types of indices fit together.
Definition at line 28 of file GetElementPtr.hpp.
|
overridedefaultnoexcept |
|
inline |
Definition at line 33 of file GetElementPtr.hpp.
|
default |
|
defaultnoexcept |
|
inlinestaticprivate |
Definition at line 215 of file GetElementPtr.hpp.
|
inlinestaticprivate |
Definition at line 205 of file GetElementPtr.hpp.
|
overridevirtual |
Implements jlm::rvsdg::Operation.
Definition at line 43 of file GetElementPtr.cpp.
|
inlinestatic |
Creates a GetElementPtr RVSDG node.
| baseAddress | The base address for the pointer calculation. |
| indices | The offsets from the base address. |
| pointeeType | The type the base address points to. |
Definition at line 195 of file GetElementPtr.hpp.
|
inlinestatic |
Creates a GetElementPtr RVSDG node.
| baseAddress | The base address for the pointer calculation. |
| indices | The offsets from the base address. |
| pointeeType | The type the base address points to. |
Definition at line 168 of file GetElementPtr.hpp.
|
inlinestaticprivate |
Definition at line 233 of file GetElementPtr.hpp.
|
inlinestatic |
Creates a GetElementPtr three address code.
| baseAddress | The base address for the pointer calculation. |
| offsets | The offsets from the base address. |
| pointeeType | The type the base address points to. |
Definition at line 143 of file GetElementPtr.hpp.
|
overridevirtual |
Implements jlm::rvsdg::Operation.
Definition at line 37 of file GetElementPtr.cpp.
|
inlinestatic |
Returns the base address input of a GetElementPtrOperation node.
node must be a GetElementPtrOperation| node | The GetElementPtrOperation node. |
Definition at line 125 of file GetElementPtr.hpp.
|
inlinestatic |
Returns the base address input of a GetElementPtrOperation node.
node must be a GetElementPtrOperation.| node | The GetElementPtrOperation node. |
Definition at line 108 of file GetElementPtr.hpp.
|
inlinenoexcept |
Definition at line 54 of file GetElementPtr.hpp.
|
inlinestaticnoexcept |
Returns an iterator range to the indices of a GetElementPtrOperation node.
node is expected to have a GetElementPtrOperation.| node | A GetElementPtrOperation node. |
Definition at line 77 of file GetElementPtr.hpp.
|
inlinestaticnoexcept |
node must be a GetElementPtrOperation| node | The GetElementPtrOperation node. |
Definition at line 93 of file GetElementPtr.hpp.
|
overridenoexcept |
Definition at line 15 of file GetElementPtr.cpp.
|
staticnoexcept |
Attempts to find the constant indices of a GetElementPtrOperation node.
| node | The GetElementPtrOperation node. |
Definition at line 49 of file GetElementPtr.cpp.
|
private |
Definition at line 241 of file GetElementPtr.hpp.