Jlm
Functions
TraceTests.cpp File Reference
#include <gtest/gtest.h>
#include <jlm/rvsdg/bitstring/constant.hpp>
#include <jlm/rvsdg/gamma.hpp>
#include <jlm/rvsdg/simple-node.hpp>
#include <jlm/rvsdg/TestOperations.hpp>
#include <jlm/rvsdg/TestType.hpp>
#include <jlm/rvsdg/theta.hpp>
#include <jlm/rvsdg/Trace.hpp>
#include <jlm/rvsdg/view.hpp>
Include dependency graph for TraceTests.cpp:

Go to the source code of this file.

Functions

 TEST (TraceTests, TestTraceOutputIntraProcedural_Gamma)
 
 TEST (TraceTests, TestTraceOutputIntraProcedural_Theta)
 
 TEST (TraceTests, TestTraceNestedStructuralNodes)
 
 TEST (TraceTests, TestIndirectLoopInvariantOutput)
 
 TEST (TraceTests, TestIndirectLoopInvariance)
 
 TEST (TraceTests, GammaCachingTest)
 
 TEST (TraceTests, ThetaCachingTest)
 

Function Documentation

◆ TEST() [1/7]

TEST ( TraceTests  ,
GammaCachingTest   
)

Definition at line 330 of file TraceTests.cpp.

◆ TEST() [2/7]

TEST ( TraceTests  ,
TestIndirectLoopInvariance   
)

Tests tracing through and out of theta nodes where a loop variable is not invariant, but takes its post value from an invariant loop variable, with whom it shares input.

Creates a graph with a single theta node that looks like

 20
 |\
 | \
 V  V

+---------—+ | | V | | | USER1 | | |\ | | | \ | | V V | +---------—+ V USER2

Tracing from either USER1 and USER2 should lead to the constant integer 20, despite the loop variable not being directly invariant.

Definition at line 277 of file TraceTests.cpp.

◆ TEST() [3/7]

TEST ( TraceTests  ,
TestIndirectLoopInvariantOutput   
)

Tests tracing through and out of theta nodes where a loop variable is not invariant, but takes its post value from an invariant loop variable. The two variables do not share input origin.

Creates a graph with a single theta node that looks like

 20 40
 |  |
 |  |
 V  V

+---------—+ | | V | | | USER1 | | |\ | | | \ | | V V | +---------—+ V USER2

Tracing from USER1 should stop at the theta pre argument, while tracing from USER2 should lead to the constant 20.

Definition at line 219 of file TraceTests.cpp.

◆ TEST() [4/7]

TEST ( TraceTests  ,
TestTraceNestedStructuralNodes   
)

Creates a graph with a gamma node inside a theta node, where some values are invariant.

Definition at line 117 of file TraceTests.cpp.

◆ TEST() [5/7]

TEST ( TraceTests  ,
TestTraceOutputIntraProcedural_Gamma   
)

Tests tracing out of and through a single gamma node. One of the gamma's exit vars is trivially invariant, and can be traced through the gamma.

Definition at line 21 of file TraceTests.cpp.

◆ TEST() [6/7]

TEST ( TraceTests  ,
TestTraceOutputIntraProcedural_Theta   
)

Tests tracing out of and through a single theta node.

Definition at line 75 of file TraceTests.cpp.

◆ TEST() [7/7]

TEST ( TraceTests  ,
ThetaCachingTest   
)

Definition at line 376 of file TraceTests.cpp.