Aleph-w 3.0
A C++ Library for Data Structures and Algorithms
Loading...
Searching...
No Matches
Aleph::Compiler_Dataflow_Detail Namespace Reference

Classes

struct  Block_Simulation
 
struct  Block_Use_Def
 

Functions

Compiler_Dataflow_Constant unknown_constant ()
 
Compiler_Dataflow_Constant undefined_constant ()
 
Compiler_Dataflow_Constant integer_constant (const long long value)
 
Compiler_Dataflow_Constant boolean_constant (const bool value)
 
Compiler_Dataflow_Constant unit_constant ()
 
bool same_constant (const Compiler_Dataflow_Constant &lhs, const Compiler_Dataflow_Constant &rhs) noexcept
 
std::string constant_to_string (const Compiler_Dataflow_Constant &constant)
 
bool parse_integer_constant (const std::string &text, long long &value) noexcept
 
Compiler_Dataflow_Constant constant_from_instruction (const Compiler_IR_Instruction &inst)
 
Compiler_Dataflow_Constant meet_constants (const Compiler_Dataflow_Constant &lhs, const Compiler_Dataflow_Constant &rhs)
 
Compiler_Dataflow_Bit_Set make_bit_set (const size_t count, const bool value=false)
 
DynArray< Compiler_Dataflow_Constant > make_constant_vector (const size_t count, const Compiler_Dataflow_Constant &fill)
 
bool bit_set_equals (const Compiler_Dataflow_Bit_Set &lhs, const Compiler_Dataflow_Bit_Set &rhs) noexcept
 
bool constant_vector_equals (const DynArray< Compiler_Dataflow_Constant > &lhs, const DynArray< Compiler_Dataflow_Constant > &rhs) noexcept
 
Compiler_Dataflow_Bit_Set bit_set_union (const Compiler_Dataflow_Bit_Set &lhs, const Compiler_Dataflow_Bit_Set &rhs)
 
Compiler_Dataflow_Bit_Set bit_set_intersection (const Compiler_Dataflow_Bit_Set &lhs, const Compiler_Dataflow_Bit_Set &rhs)
 
Compiler_Dataflow_Bit_Set bit_set_subtract (const Compiler_Dataflow_Bit_Set &lhs, const Compiler_Dataflow_Bit_Set &rhs)
 
Compiler_Dataflow_Bit_Set initial_assigned_state (const Compiler_IR_Function &function)
 
DynArray< Compiler_Dataflow_Constant > initial_constant_state (const Compiler_IR_Function &function)
 
Compiler_Dataflow_Constant value_constant (const DynArray< Compiler_Dataflow_Constant > &values, const Compiler_IR_Value_Id id)
 
void mark_value_used (DynArray< unsigned char > &used_values, const Compiler_IR_Value_Id id)
 
bool is_value_used (const DynArray< unsigned char > &used_values, const Compiler_IR_Value_Id id) noexcept
 
bool is_pure_instruction (const Compiler_IR_Instruction &inst) noexcept
 
Compiler_Dataflow_Constant evaluate_unary (const Compiler_Operator_Kind op, const Compiler_Dataflow_Constant &operand)
 
Compiler_Dataflow_Constant evaluate_binary (const Compiler_Operator_Kind op, const Compiler_Dataflow_Constant &lhs, const Compiler_Dataflow_Constant &rhs)
 
Block_Use_Def compute_block_use_def (const Compiler_IR_Function &function, const Compiler_IR_Block &block)
 
DynArray< bool > compute_reachability (const Compiler_IR_Function &function)
 
Block_Simulation simulate_block (const Compiler_IR_Function &function, const Compiler_IR_Block &block, const Compiler_Dataflow_Bit_Set &assigned_in, const DynArray< Compiler_Dataflow_Constant > &constants_in, DynArray< Compiler_Dataflow_Uninitialized_Read > *findings=nullptr)
 
std::string format_slot_set (const Compiler_IR_Function &function, const Compiler_Dataflow_Bit_Set &set)
 
std::string format_slot_constants (const Compiler_IR_Function &function, const DynArray< Compiler_Dataflow_Constant > &constants)
 
void rebuild_predecessors (Compiler_IR_Function &function)
 
DynArray< DynArray< Compiler_IR_Block_Id > > compute_predecessor_lists (const Compiler_IR_Function &function)
 
size_t count_instructions (const Compiler_IR_Function &function)
 
bool instruction_is_trivially_dead (const Compiler_IR_Instruction &inst, const Compiler_Dataflow_Bit_Set &live_after, const DynArray< unsigned char > &used_values, const Compiler_IR_Function &function) noexcept
 

Function Documentation

◆ bit_set_equals()

bool Aleph::Compiler_Dataflow_Detail::bit_set_equals ( const Compiler_Dataflow_Bit_Set &  lhs,
const Compiler_Dataflow_Bit_Set &  rhs 
)
inlinenoexcept

◆ bit_set_intersection()

◆ bit_set_subtract()

◆ bit_set_union()

◆ boolean_constant()

Compiler_Dataflow_Constant Aleph::Compiler_Dataflow_Detail::boolean_constant ( const bool  value)
inline

◆ compute_block_use_def()

◆ compute_predecessor_lists()

DynArray< DynArray< Compiler_IR_Block_Id > > Aleph::Compiler_Dataflow_Detail::compute_predecessor_lists ( const Compiler_IR_Function &  function)
inline

◆ compute_reachability()

◆ constant_from_instruction()

◆ constant_to_string()

std::string Aleph::Compiler_Dataflow_Detail::constant_to_string ( const Compiler_Dataflow_Constant &  constant)
inline

◆ constant_vector_equals()

bool Aleph::Compiler_Dataflow_Detail::constant_vector_equals ( const DynArray< Compiler_Dataflow_Constant > &  lhs,
const DynArray< Compiler_Dataflow_Constant > &  rhs 
)
inlinenoexcept

◆ count_instructions()

size_t Aleph::Compiler_Dataflow_Detail::count_instructions ( const Compiler_IR_Function &  function)
inline

◆ evaluate_binary()

◆ evaluate_unary()

◆ format_slot_constants()

◆ format_slot_set()

◆ initial_assigned_state()

Compiler_Dataflow_Bit_Set Aleph::Compiler_Dataflow_Detail::initial_assigned_state ( const Compiler_IR_Function &  function)
inline

◆ initial_constant_state()

DynArray< Compiler_Dataflow_Constant > Aleph::Compiler_Dataflow_Detail::initial_constant_state ( const Compiler_IR_Function &  function)
inline

◆ instruction_is_trivially_dead()

bool Aleph::Compiler_Dataflow_Detail::instruction_is_trivially_dead ( const Compiler_IR_Instruction &  inst,
const Compiler_Dataflow_Bit_Set &  live_after,
const DynArray< unsigned char > &  used_values,
const Compiler_IR_Function &  function 
)
inlinenoexcept

◆ integer_constant()

Compiler_Dataflow_Constant Aleph::Compiler_Dataflow_Detail::integer_constant ( const long long  value)
inline

◆ is_pure_instruction()

bool Aleph::Compiler_Dataflow_Detail::is_pure_instruction ( const Compiler_IR_Instruction &  inst)
inlinenoexcept

◆ is_value_used()

bool Aleph::Compiler_Dataflow_Detail::is_value_used ( const DynArray< unsigned char > &  used_values,
const Compiler_IR_Value_Id  id 
)
inlinenoexcept

◆ make_bit_set()

◆ make_constant_vector()

DynArray< Compiler_Dataflow_Constant > Aleph::Compiler_Dataflow_Detail::make_constant_vector ( const size_t  count,
const Compiler_Dataflow_Constant &  fill 
)
inline

◆ mark_value_used()

void Aleph::Compiler_Dataflow_Detail::mark_value_used ( DynArray< unsigned char > &  used_values,
const Compiler_IR_Value_Id  id 
)
inline

◆ meet_constants()

◆ parse_integer_constant()

bool Aleph::Compiler_Dataflow_Detail::parse_integer_constant ( const std::string &  text,
long long &  value 
)
inlinenoexcept

Definition at line 313 of file Compiler_Dataflow.H.

References Aleph::blossom_maximum_cardinality_matching(), and value.

Referenced by constant_from_instruction().

◆ rebuild_predecessors()

void Aleph::Compiler_Dataflow_Detail::rebuild_predecessors ( Compiler_IR_Function &  function)
inline

Definition at line 875 of file Compiler_Dataflow.H.

References Aleph::Compiler_IR_Function::blocks.

Referenced by Aleph::eliminate_dead_code().

◆ same_constant()

bool Aleph::Compiler_Dataflow_Detail::same_constant ( const Compiler_Dataflow_Constant &  lhs,
const Compiler_Dataflow_Constant &  rhs 
)
inlinenoexcept

◆ simulate_block()

◆ undefined_constant()

Compiler_Dataflow_Constant Aleph::Compiler_Dataflow_Detail::undefined_constant ( )
inline

◆ unit_constant()

Compiler_Dataflow_Constant Aleph::Compiler_Dataflow_Detail::unit_constant ( )
inline

◆ unknown_constant()

◆ value_constant()