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

IndirectCallTest2 class. More...

#include <TestRvsdgs.hpp>

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

Public Member Functions

jlm::rvsdg::DeltaNodeGetDeltaG1 () const noexcept
 
jlm::rvsdg::DeltaNodeGetDeltaG2 () const noexcept
 
jlm::rvsdg::LambdaNodeGetLambdaThree () const noexcept
 
jlm::rvsdg::LambdaNodeGetLambdaFour () const noexcept
 
jlm::rvsdg::LambdaNodeGetLambdaI () const noexcept
 
jlm::rvsdg::LambdaNodeGetLambdaX () const noexcept
 
jlm::rvsdg::LambdaNodeGetLambdaY () const noexcept
 
jlm::rvsdg::LambdaNodeGetLambdaTest () const noexcept
 
jlm::rvsdg::LambdaNodeGetLambdaTest2 () const noexcept
 
rvsdg::SimpleNodeGetIndirectCall () const noexcept
 
rvsdg::SimpleNodeGetCallIWithThree () const noexcept
 
rvsdg::SimpleNodeGetCallIWithFour () const noexcept
 
rvsdg::SimpleNodeGetTestCallX () const noexcept
 
rvsdg::SimpleNodeGetTest2CallX () const noexcept
 
rvsdg::SimpleNodeGetCallY () const noexcept
 
jlm::rvsdg::SimpleNodeGetAllocaPx () const noexcept
 
jlm::rvsdg::SimpleNodeGetAllocaPy () const noexcept
 
jlm::rvsdg::SimpleNodeGetAllocaPz () const noexcept
 
- 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::DeltaNodeDeltaG1_ {}
 
jlm::rvsdg::DeltaNodeDeltaG2_ {}
 
jlm::rvsdg::LambdaNodeLambdaThree_ {}
 
jlm::rvsdg::LambdaNodeLambdaFour_ {}
 
jlm::rvsdg::LambdaNodeLambdaI_ {}
 
jlm::rvsdg::LambdaNodeLambdaX_ {}
 
jlm::rvsdg::LambdaNodeLambdaY_ {}
 
jlm::rvsdg::LambdaNodeLambdaTest_ {}
 
jlm::rvsdg::LambdaNodeLambdaTest2_ {}
 
rvsdg::SimpleNodeIndirectCall_ {}
 
rvsdg::SimpleNodeCallIWithThree_ {}
 
rvsdg::SimpleNodeCallIWithFour_ {}
 
rvsdg::SimpleNodeTestCallX_ {}
 
rvsdg::SimpleNodeTest2CallX_ {}
 
rvsdg::SimpleNodeCallY_ {}
 
jlm::rvsdg::SimpleNodeAllocaPx_ {}
 
jlm::rvsdg::SimpleNodeAllocaPy_ {}
 
jlm::rvsdg::SimpleNodeAllocaPz_ {}
 

Detailed Description

IndirectCallTest2 class.

This function sets up an RVSDG representing the following program:

static int32_t g1 = 1;
static int32_t g2 = 2;
static int32_t
three()
{
return 3;
}
static int32_t
four()
{
return 4;
}
static int32_t
i(int32_t(*f)())
{
return f();
}
static int32_t
x(int32_t * p)
{
*p = 5;
return i(&three);
}
static int32_t
y(int32_t * p)
{
*p = 6;
return i(&four);
}
int32_t
test()
{
int32_t px;
int32_t py;
int32_t sum = x(&px) + y(&py);
sum += g1 + g2;
return sum + px + py;
}
int32_t
test2()
{
int32_t pz;
return x(&pz);
}

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

Definition at line 686 of file TestRvsdgs.hpp.

Member Function Documentation

◆ GetAllocaPx()

jlm::rvsdg::SimpleNode& jlm::llvm::IndirectCallTest2::GetAllocaPx ( ) const
inlinenoexcept

Definition at line 780 of file TestRvsdgs.hpp.

◆ GetAllocaPy()

jlm::rvsdg::SimpleNode& jlm::llvm::IndirectCallTest2::GetAllocaPy ( ) const
inlinenoexcept

Definition at line 786 of file TestRvsdgs.hpp.

◆ GetAllocaPz()

jlm::rvsdg::SimpleNode& jlm::llvm::IndirectCallTest2::GetAllocaPz ( ) const
inlinenoexcept

Definition at line 792 of file TestRvsdgs.hpp.

◆ GetCallIWithFour()

rvsdg::SimpleNode& jlm::llvm::IndirectCallTest2::GetCallIWithFour ( ) const
inlinenoexcept

Definition at line 756 of file TestRvsdgs.hpp.

◆ GetCallIWithThree()

rvsdg::SimpleNode& jlm::llvm::IndirectCallTest2::GetCallIWithThree ( ) const
inlinenoexcept

Definition at line 750 of file TestRvsdgs.hpp.

◆ GetCallY()

rvsdg::SimpleNode& jlm::llvm::IndirectCallTest2::GetCallY ( ) const
inlinenoexcept

Definition at line 774 of file TestRvsdgs.hpp.

◆ GetDeltaG1()

jlm::rvsdg::DeltaNode& jlm::llvm::IndirectCallTest2::GetDeltaG1 ( ) const
inlinenoexcept

Definition at line 690 of file TestRvsdgs.hpp.

◆ GetDeltaG2()

jlm::rvsdg::DeltaNode& jlm::llvm::IndirectCallTest2::GetDeltaG2 ( ) const
inlinenoexcept

Definition at line 696 of file TestRvsdgs.hpp.

◆ GetIndirectCall()

rvsdg::SimpleNode& jlm::llvm::IndirectCallTest2::GetIndirectCall ( ) const
inlinenoexcept

Definition at line 744 of file TestRvsdgs.hpp.

◆ GetLambdaFour()

jlm::rvsdg::LambdaNode& jlm::llvm::IndirectCallTest2::GetLambdaFour ( ) const
inlinenoexcept

Definition at line 708 of file TestRvsdgs.hpp.

◆ GetLambdaI()

jlm::rvsdg::LambdaNode& jlm::llvm::IndirectCallTest2::GetLambdaI ( ) const
inlinenoexcept

Definition at line 714 of file TestRvsdgs.hpp.

◆ GetLambdaTest()

jlm::rvsdg::LambdaNode& jlm::llvm::IndirectCallTest2::GetLambdaTest ( ) const
inlinenoexcept

Definition at line 732 of file TestRvsdgs.hpp.

◆ GetLambdaTest2()

jlm::rvsdg::LambdaNode& jlm::llvm::IndirectCallTest2::GetLambdaTest2 ( ) const
inlinenoexcept

Definition at line 738 of file TestRvsdgs.hpp.

◆ GetLambdaThree()

jlm::rvsdg::LambdaNode& jlm::llvm::IndirectCallTest2::GetLambdaThree ( ) const
inlinenoexcept

Definition at line 702 of file TestRvsdgs.hpp.

◆ GetLambdaX()

jlm::rvsdg::LambdaNode& jlm::llvm::IndirectCallTest2::GetLambdaX ( ) const
inlinenoexcept

Definition at line 720 of file TestRvsdgs.hpp.

◆ GetLambdaY()

jlm::rvsdg::LambdaNode& jlm::llvm::IndirectCallTest2::GetLambdaY ( ) const
inlinenoexcept

Definition at line 726 of file TestRvsdgs.hpp.

◆ GetTest2CallX()

rvsdg::SimpleNode& jlm::llvm::IndirectCallTest2::GetTest2CallX ( ) const
inlinenoexcept

Definition at line 768 of file TestRvsdgs.hpp.

◆ GetTestCallX()

rvsdg::SimpleNode& jlm::llvm::IndirectCallTest2::GetTestCallX ( ) const
inlinenoexcept

Definition at line 762 of file TestRvsdgs.hpp.

◆ SetupRvsdg()

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

Create RVSDG for this test.

Implements jlm::llvm::RvsdgTest.

Definition at line 903 of file TestRvsdgs.cpp.

Member Data Documentation

◆ AllocaPx_

jlm::rvsdg::SimpleNode* jlm::llvm::IndirectCallTest2::AllocaPx_ {}
private

Definition at line 819 of file TestRvsdgs.hpp.

◆ AllocaPy_

jlm::rvsdg::SimpleNode* jlm::llvm::IndirectCallTest2::AllocaPy_ {}
private

Definition at line 820 of file TestRvsdgs.hpp.

◆ AllocaPz_

jlm::rvsdg::SimpleNode* jlm::llvm::IndirectCallTest2::AllocaPz_ {}
private

Definition at line 821 of file TestRvsdgs.hpp.

◆ CallIWithFour_

rvsdg::SimpleNode* jlm::llvm::IndirectCallTest2::CallIWithFour_ {}
private

Definition at line 814 of file TestRvsdgs.hpp.

◆ CallIWithThree_

rvsdg::SimpleNode* jlm::llvm::IndirectCallTest2::CallIWithThree_ {}
private

Definition at line 813 of file TestRvsdgs.hpp.

◆ CallY_

rvsdg::SimpleNode* jlm::llvm::IndirectCallTest2::CallY_ {}
private

Definition at line 817 of file TestRvsdgs.hpp.

◆ DeltaG1_

jlm::rvsdg::DeltaNode* jlm::llvm::IndirectCallTest2::DeltaG1_ {}
private

Definition at line 801 of file TestRvsdgs.hpp.

◆ DeltaG2_

jlm::rvsdg::DeltaNode* jlm::llvm::IndirectCallTest2::DeltaG2_ {}
private

Definition at line 802 of file TestRvsdgs.hpp.

◆ IndirectCall_

rvsdg::SimpleNode* jlm::llvm::IndirectCallTest2::IndirectCall_ {}
private

Definition at line 812 of file TestRvsdgs.hpp.

◆ LambdaFour_

jlm::rvsdg::LambdaNode* jlm::llvm::IndirectCallTest2::LambdaFour_ {}
private

Definition at line 805 of file TestRvsdgs.hpp.

◆ LambdaI_

jlm::rvsdg::LambdaNode* jlm::llvm::IndirectCallTest2::LambdaI_ {}
private

Definition at line 806 of file TestRvsdgs.hpp.

◆ LambdaTest2_

jlm::rvsdg::LambdaNode* jlm::llvm::IndirectCallTest2::LambdaTest2_ {}
private

Definition at line 810 of file TestRvsdgs.hpp.

◆ LambdaTest_

jlm::rvsdg::LambdaNode* jlm::llvm::IndirectCallTest2::LambdaTest_ {}
private

Definition at line 809 of file TestRvsdgs.hpp.

◆ LambdaThree_

jlm::rvsdg::LambdaNode* jlm::llvm::IndirectCallTest2::LambdaThree_ {}
private

Definition at line 804 of file TestRvsdgs.hpp.

◆ LambdaX_

jlm::rvsdg::LambdaNode* jlm::llvm::IndirectCallTest2::LambdaX_ {}
private

Definition at line 807 of file TestRvsdgs.hpp.

◆ LambdaY_

jlm::rvsdg::LambdaNode* jlm::llvm::IndirectCallTest2::LambdaY_ {}
private

Definition at line 808 of file TestRvsdgs.hpp.

◆ Test2CallX_

rvsdg::SimpleNode* jlm::llvm::IndirectCallTest2::Test2CallX_ {}
private

Definition at line 816 of file TestRvsdgs.hpp.

◆ TestCallX_

rvsdg::SimpleNode* jlm::llvm::IndirectCallTest2::TestCallX_ {}
private

Definition at line 815 of file TestRvsdgs.hpp.


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