VapourSynth-llvmexpr
Loading...
Searching...
No Matches
analysis::VariableUsagePass Class Reference

#include <llvmexpr/analysis/passes/VariableUsagePass.hpp>

Inheritance diagram for analysis::VariableUsagePass:
Collaboration diagram for analysis::VariableUsagePass:

Public Member Functions

VariableUsageResult run (const std::vector< Token > &tokens, AnalysisManager &am) override
const char * getName () const override
Public Member Functions inherited from analysis::Pass
 Pass ()=default
virtual ~Pass ()=default
 Pass (const Pass &)=delete
Passoperator= (const Pass &)=delete
 Pass (Pass &&)=delete
Passoperator= (Pass &&)=delete

Additional Inherited Members

Public Types inherited from analysis::AnalysisPass< VariableUsagePass, VariableUsageResult >
using Result

Detailed Description

Analyzes the expression to find all declared and used variables. Collects:

  • A set of all unique variable names used in the expression. This information is used by the IR generator to pre-allocate stack space for all variables at the beginning of the function. Depends on: None

Definition at line 42 of file VariableUsagePass.hpp.

Member Function Documentation

◆ getName()

const char * analysis::VariableUsagePass::getName ( ) const
inlinenodiscardoverridevirtual

Implements analysis::Pass.

Definition at line 48 of file VariableUsagePass.hpp.

48 {
49 return "VariableUsagePass";
50 }

◆ run()

VariableUsageResult analysis::VariableUsagePass::run ( const std::vector< Token > & tokens,
AnalysisManager & am )
overridevirtual

Implements analysis::AnalysisPass< VariableUsagePass, VariableUsageResult >.

Definition at line 27 of file VariableUsagePass.cpp.

28 {
29 VariableUsageResult result;
30 for (const auto& token : tokens) {
31 if (token.type == TokenType::VarStore ||
32 token.type == TokenType::VarLoad) {
33 const auto& payload = std::get<TokenPayloadVar>(token.payload);
34 result.all_vars.insert(payload.name);
35 }
36 }
37 return result;
38}

References analysis::VariableUsageResult::all_vars, VarLoad, and VarStore.


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