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

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

Inheritance diagram for analysis::CoordinateUsagePass:
Collaboration diagram for analysis::CoordinateUsagePass:

Public Member Functions

CoordinateUsageResult 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< CoordinateUsagePass, CoordinateUsageResult >
using Result

Detailed Description

Analyzes the expression to determine if 'x' or 'y' coordinates are used. Collects:

  • A boolean indicating if 'x' is used.
  • A boolean indicating if 'y' is used. This information is used by the IR generator to avoid generating unnecessary coordinate variables and calculations. Depends on: None

Definition at line 41 of file CoordinateUsagePass.hpp.

Member Function Documentation

◆ getName()

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

Implements analysis::Pass.

Definition at line 47 of file CoordinateUsagePass.hpp.

47 {
48 return "CoordinateUsagePass";
49 }

◆ run()

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

Implements analysis::AnalysisPass< CoordinateUsagePass, CoordinateUsageResult >.

Definition at line 27 of file CoordinateUsagePass.cpp.

28 {
29 CoordinateUsageResult result;
30 for (const auto& token : tokens) {
31 if (token.type == TokenType::ConstantX) {
32 result.uses_x = true;
33 }
34 if (token.type == TokenType::ConstantY) {
35 result.uses_y = true;
36 }
37 if (result.uses_x && result.uses_y) {
38 break;
39 }
40 }
41 return result;
42}

References ConstantX, ConstantY, analysis::CoordinateUsageResult::uses_x, and analysis::CoordinateUsageResult::uses_y.


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