#include <GetElementPtr.hpp>
Represents LLVM's getelementptr instruction.
See LLVM Language Reference Manual for more details.
Definition at line 24 of file GetElementPtr.hpp.
◆ ~GetElementPtrOperation()
| jlm::llvm::GetElementPtrOperation::~GetElementPtrOperation |
( |
| ) |
|
|
overridedefaultnoexcept |
◆ GetElementPtrOperation() [1/3]
| jlm::llvm::GetElementPtrOperation::GetElementPtrOperation |
( |
const std::shared_ptr< const rvsdg::Type > & |
baseAddressType, |
|
|
const std::vector< std::shared_ptr< const rvsdg::Type > > & |
indexTypes, |
|
|
std::shared_ptr< const rvsdg::Type > |
gepType, |
|
|
std::shared_ptr< const rvsdg::Type > |
resultType |
|
) |
| |
|
inlineprivate |
◆ GetElementPtrOperation() [2/3]
◆ GetElementPtrOperation() [3/3]
◆ checkBaseAddressType()
| static void jlm::llvm::GetElementPtrOperation::checkBaseAddressType |
( |
const rvsdg::Type & |
type | ) |
|
|
inlinestaticprivate |
◆ checkIndexedType()
| static void jlm::llvm::GetElementPtrOperation::checkIndexedType |
( |
const std::shared_ptr< const rvsdg::Type > & |
gepType, |
|
|
const std::vector< rvsdg::Output * > & |
indices |
|
) |
| |
|
inlinestaticprivate |
◆ checkIndexTypes()
| static void jlm::llvm::GetElementPtrOperation::checkIndexTypes |
( |
const std::vector< std::shared_ptr< const rvsdg::Type > > & |
indexTypes | ) |
|
|
inlinestaticprivate |
◆ copy()
| std::unique_ptr< rvsdg::Operation > jlm::llvm::GetElementPtrOperation::copy |
( |
| ) |
const |
|
overridevirtual |
◆ create()
Creates a GetElementPtr RVSDG node.
- Parameters
-
| baseAddress | The base address for the pointer calculation. |
| indices | The offsets from the base address. |
| gepType | The type used for address calculation. |
- Returns
- The output of the created GetElementPtr RVSDG node.
Definition at line 231 of file GetElementPtr.hpp.
◆ createNode()
Creates a GetElementPtr RVSDG node.
- Parameters
-
| baseAddress | The base address for the pointer calculation. |
| indices | The offsets from the base address. |
| gepType | The type used for address calculation. |
- Returns
- The created GetElementPtr RVSDG node.
Definition at line 204 of file GetElementPtr.hpp.
◆ createOperandTypes()
| static std::vector< std::shared_ptr< const rvsdg::Type > > jlm::llvm::GetElementPtrOperation::createOperandTypes |
( |
std::shared_ptr< const rvsdg::Type > |
baseAddressType, |
|
|
const std::vector< std::shared_ptr< const rvsdg::Type > > & |
indexTypes |
|
) |
| |
|
inlinestaticprivate |
◆ createOperation()
| static std::unique_ptr< GetElementPtrOperation > jlm::llvm::GetElementPtrOperation::createOperation |
( |
const std::shared_ptr< const rvsdg::Type > & |
baseAddressType, |
|
|
const std::vector< std::shared_ptr< const rvsdg::Type > > & |
indexTypes, |
|
|
const std::shared_ptr< const rvsdg::Type > & |
gepType |
|
) |
| |
|
inlinestatic |
◆ createTAC()
| static std::unique_ptr< ThreeAddressCode > jlm::llvm::GetElementPtrOperation::createTAC |
( |
const Variable * |
baseAddress, |
|
|
const std::vector< const Variable * > & |
offsets, |
|
|
std::shared_ptr< const rvsdg::Type > |
gepType |
|
) |
| |
|
inlinestatic |
Creates a GetElementPtr three address code.
- Parameters
-
| baseAddress | The base address for the pointer calculation. |
| offsets | The offsets from the base address. |
| gepType | The type used for address calculation. |
- Returns
- A getElementPtr three address code.
Definition at line 159 of file GetElementPtr.hpp.
◆ debug_string()
| std::string jlm::llvm::GetElementPtrOperation::debug_string |
( |
| ) |
const |
|
overridevirtual |
◆ extractIndexTypes()
template<class T >
| static std::vector< std::shared_ptr< const rvsdg::Type > > jlm::llvm::GetElementPtrOperation::extractIndexTypes |
( |
const std::vector< T * > & |
indices | ) |
|
|
inlinestaticprivate |
◆ getBaseAddressInput() [1/2]
◆ getBaseAddressInput() [2/2]
◆ getIndexedType()
| std::shared_ptr< const rvsdg::Type > jlm::llvm::GetElementPtrOperation::getIndexedType |
( |
const std::shared_ptr< const rvsdg::Type > & |
gepType, |
|
|
const std::vector< rvsdg::Output * > & |
indices |
|
) |
| |
|
staticprivate |
◆ getPointeeType()
| std::shared_ptr< const rvsdg::Type > jlm::llvm::GetElementPtrOperation::getPointeeType |
( |
| ) |
const |
|
inlinenoexcept |
◆ getResultType()
| static std::shared_ptr< const rvsdg::Type > jlm::llvm::GetElementPtrOperation::getResultType |
( |
const std::shared_ptr< const rvsdg::Type > & |
baseAddressType, |
|
|
const std::vector< std::shared_ptr< const rvsdg::Type > > & |
indexTypes |
|
) |
| |
|
inlinestaticprivate |
◆ indices()
◆ normalizeIdempotent()
Removes all GetElementPtrOperation nodes that either have no index operands or where all indices are constant zero.
- Parameters
-
- Returns
- If the normalization could be applied, then the results of the GetElementPtrOperation after the transformation. Otherwise, std::nullopt.
Definition at line 160 of file GetElementPtr.cpp.
◆ numIndices()
| static size_t jlm::llvm::GetElementPtrOperation::numIndices |
( |
const rvsdg::Node & |
node | ) |
|
|
inlinestaticnoexcept |
◆ operator==()
| bool jlm::llvm::GetElementPtrOperation::operator== |
( |
const Operation & |
other | ) |
const |
|
overridenoexcept |
◆ tryGetAsConstant()
◆ gepType_
| std::shared_ptr<const rvsdg::Type> jlm::llvm::GetElementPtrOperation::gepType_ |
|
private |
The documentation for this class was generated from the following files: