Jlm
Public Member Functions | Private Member Functions | Private Attributes | List of all members
jlm::llvm::ExternalCallTest2 Class Referencefinal

#include <TestRvsdgs.hpp>

Inheritance diagram for jlm::llvm::ExternalCallTest2:
Inheritance graph
[legend]
Collaboration diagram for jlm::llvm::ExternalCallTest2:
Collaboration graph
[legend]

Public Member Functions

jlm::rvsdg::LambdaNodeLambdaG ()
 
rvsdg::SimpleNodeCallF ()
 
jlm::rvsdg::RegionArgumentExternalF ()
 
- Public Member Functions inherited from jlm::llvm::RvsdgTest
virtual ~RvsdgTest ()=default
 
jlm::llvm::LlvmRvsdgModulemodule ()
 
const rvsdg::Graphgraph ()
 
void InitializeTest ()
 

Private Member Functions

std::unique_ptr< jlm::llvm::LlvmRvsdgModuleSetupRvsdg () override
 Create RVSDG for this test. More...
 

Private Attributes

jlm::rvsdg::LambdaNodeLambdaG_ = {}
 
rvsdg::SimpleNodeCallF_ = {}
 
jlm::rvsdg::RegionArgumentExternalFArgument_ = {}
 

Detailed Description

This function sets up an RVSDG representing the following program:

#include <stdint.h>
typedef struct myStruct
{
uint32_t i;
uint32_t ** p1;
uint32_t ** p2;
} myStruct;
extern void
f(myStruct * s);
void
g()
{
myStruct s;
f(&s);
uint32_t * tmp = *s.p1;
*s.p1 = *s.p2;
*s.p2 = tmp;
}

It uses a single memory state to sequentialize the respective memory operations within each function.

Definition at line 903 of file TestRvsdgs.hpp.

Member Function Documentation

◆ CallF()

rvsdg::SimpleNode& jlm::llvm::ExternalCallTest2::CallF ( )
inline

Definition at line 914 of file TestRvsdgs.hpp.

◆ ExternalF()

jlm::rvsdg::RegionArgument& jlm::llvm::ExternalCallTest2::ExternalF ( )
inline

Definition at line 921 of file TestRvsdgs.hpp.

◆ LambdaG()

jlm::rvsdg::LambdaNode& jlm::llvm::ExternalCallTest2::LambdaG ( )
inline

Definition at line 907 of file TestRvsdgs.hpp.

◆ SetupRvsdg()

std::unique_ptr< jlm::llvm::LlvmRvsdgModule > jlm::llvm::ExternalCallTest2::SetupRvsdg ( )
overrideprivatevirtual

Create RVSDG for this test.

Implements jlm::llvm::RvsdgTest.

Definition at line 1266 of file TestRvsdgs.cpp.

Member Data Documentation

◆ CallF_

rvsdg::SimpleNode* jlm::llvm::ExternalCallTest2::CallF_ = {}
private

Definition at line 933 of file TestRvsdgs.hpp.

◆ ExternalFArgument_

jlm::rvsdg::RegionArgument* jlm::llvm::ExternalCallTest2::ExternalFArgument_ = {}
private

Definition at line 935 of file TestRvsdgs.hpp.

◆ LambdaG_

jlm::rvsdg::LambdaNode* jlm::llvm::ExternalCallTest2::LambdaG_ = {}
private

Definition at line 931 of file TestRvsdgs.hpp.


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