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

#include <TestRvsdgs.hpp>

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

Public Member Functions

const jlm::rvsdg::LambdaNodeGetLambdaFst () const noexcept
 
const jlm::rvsdg::LambdaNodeGetLambdaG () const noexcept
 
rvsdg::NodeGetAllocaNode () 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::LambdaNodeLambdaFst_ = {}
 
jlm::rvsdg::LambdaNodeLambdaG_ = {}
 
rvsdg::NodeAllocaNode_ = {}
 

Detailed Description

This class sets up an RVSDG representing the following code:

#include <stdarg.h>
#include <stdio.h>
#include <stdint.h>
static int
fst(int n, ...)
{
va_list arguments;
va_start(arguments, n);
int tmp = va_arg(arguments, int);
va_end(arguments);
return tmp;
}
int
g()
{
return fst(3, 0, 1, 2);
}

It uses a single memory state to sequentialize the respective memory operations within each function. The code produced by the compiler for variadic functions is architecture specific. This function sets up the code that was produced for x64.

Definition at line 2522 of file TestRvsdgs.hpp.

Member Function Documentation

◆ GetAllocaNode()

rvsdg::Node& jlm::llvm::VariadicFunctionTest2::GetAllocaNode ( ) const
inlinenoexcept

Definition at line 2540 of file TestRvsdgs.hpp.

◆ GetLambdaFst()

const jlm::rvsdg::LambdaNode& jlm::llvm::VariadicFunctionTest2::GetLambdaFst ( ) const
inlinenoexcept

Definition at line 2526 of file TestRvsdgs.hpp.

◆ GetLambdaG()

const jlm::rvsdg::LambdaNode& jlm::llvm::VariadicFunctionTest2::GetLambdaG ( ) const
inlinenoexcept

Definition at line 2533 of file TestRvsdgs.hpp.

◆ SetupRvsdg()

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

Create RVSDG for this test.

Implements jlm::llvm::RvsdgTest.

Definition at line 4027 of file TestRvsdgs.cpp.

Member Data Documentation

◆ AllocaNode_

rvsdg::Node* jlm::llvm::VariadicFunctionTest2::AllocaNode_ = {}
private

Definition at line 2553 of file TestRvsdgs.hpp.

◆ LambdaFst_

jlm::rvsdg::LambdaNode* jlm::llvm::VariadicFunctionTest2::LambdaFst_ = {}
private

Definition at line 2550 of file TestRvsdgs.hpp.

◆ LambdaG_

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

Definition at line 2551 of file TestRvsdgs.hpp.


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