GCC Middle and Back End API Reference
split_info Class Reference
Collaboration diagram for split_info:

Public Member Functions

 split_info ()
 
 ~split_info ()
 

Data Fields

basic_blockbbs
 
auto_vec< gimple * > memory_stores
 
int need_init
 
auto_vec< hash_set< basic_block > * > control_deps
 

Detailed Description

Another transformation of loops like:

for (i = INIT (); CHECK (i); i = NEXT ())
  {
    if (expr (a_1, a_2, ..., a_n))  // expr is pure
      a_j = ...;  // change at least one a_j
    else
      S;          // not change any a_j
  }

into:

for (i = INIT (); CHECK (i); i = NEXT ())
  {
    if (expr (a_1, a_2, ..., a_n))
      a_j = ...;
    else
      {
        S;
        i = NEXT ();
        break;
      }
  }

for (; CHECK (i); i = NEXT ())
  {
    S;
  }
Data structure to hold temporary information during loop split upon
semi-invariant conditional statement.   

Constructor & Destructor Documentation

◆ split_info()

split_info::split_info ( )
inline

◆ ~split_info()

split_info::~split_info ( )
inline

References bbs, control_deps, free(), and i.

Field Documentation

◆ bbs

basic_block* split_info::bbs

Referenced by split_loop_on_cond(), and ~split_info().

◆ control_deps

auto_vec<hash_set<basic_block> *> split_info::control_deps

Referenced by ~split_info().

◆ memory_stores

auto_vec<gimple *> split_info::memory_stores

◆ need_init

int split_info::need_init

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