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

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

Inheritance diagram for analysis::StaticAllocReachabilityPass:
Collaboration diagram for analysis::StaticAllocReachabilityPass:

Public Types

using Result = StaticAllocReachabilityResult
Public Types inherited from analysis::AnalysisPass< StaticAllocReachabilityPass, StaticAllocReachabilityResult >
using Result

Public Member Functions

const char * getName () const override
Result run (const std::vector< Token > &tokens, AnalysisManager &am) 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

Detailed Description

Tracks which arrays have been allocated as static (ARRAY_ALLOC_STATIC) on all paths reaching each program point. This is used by ValidationPass to detect illegal re-allocation of statically allocated arrays. Depends on: BlockAnalysisPass

Definition at line 43 of file StaticAllocReachabilityPass.hpp.

Member Typedef Documentation

◆ Result

Member Function Documentation

◆ getName()

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

Implements analysis::Pass.

Definition at line 49 of file StaticAllocReachabilityPass.hpp.

49 {
50 return "Static Allocation Reachability Pass";
51 }

◆ run()

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

Implements analysis::AnalysisPass< StaticAllocReachabilityPass, StaticAllocReachabilityResult >.

Definition at line 73 of file StaticAllocReachabilityPass.cpp.

74 {
75 const auto& block_result = am.getResult<BlockAnalysisPass>();
76 const auto& cfg_blocks = block_result.cfg_blocks;
77
78 Result result;
79
80 StaticAllocReachabilityAnalysis analysis;
81 auto [in_sets, out_sets] = analysis.analyze(tokens, cfg_blocks);
82
83 result.static_alloc_in = std::move(in_sets);
84 result.static_alloc_out = std::move(out_sets);
85
86 return result;
87}

References analysis::AnalysisManager::getResult(), analysis::StaticAllocReachabilityResult::static_alloc_in, and analysis::StaticAllocReachabilityResult::static_alloc_out.


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