GCC Middle and Back End API Reference
st_expr Struct Reference
Collaboration diagram for st_expr:

Data Fields

rtx pattern
 
vec< rtxpattern_regs
 
vec< rtx_insn * > antic_stores
 
vec< rtx_insn * > avail_stores
 
struct st_exprnext
 
int index
 
unsigned int hash_index
 
rtx reaching_reg
 

Detailed Description

Store motion via Lazy Code Motion on the reverse CFG.
   Copyright (C) 1997-2024 Free Software Foundation, Inc.

This file is part of GCC.

GCC is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free
Software Foundation; either version 3, or (at your option) any later
version.

GCC is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
for more details.

You should have received a copy of the GNU General Public License
along with GCC; see the file COPYING3.  If not see
<http://www.gnu.org/licenses/>.   
This pass implements downward store motion.
As of May 1, 2009, the pass is not enabled by default on any target,
but bootstrap completes on ia64 and x86_64 with the pass enabled.   
TODO:
  - remove_reachable_equiv_notes is an incomprehensible pile of goo and
    a compile time hog that needs a rewrite (maybe cache st_exprs to
    invalidate REG_EQUAL/REG_EQUIV notes for?).
  - pattern_regs in st_expr should be a regset (on its own obstack).
  - store_motion_mems should be a vec instead of a list.
  - there should be an alloc pool for struct st_expr objects.
  - investigate whether it is helpful to make the address of an st_expr
    a cselib VALUE.
  - when GIMPLE alias information is exported, the effectiveness of this
    pass should be re-evaluated.
This is a list of store expressions (MEMs).  The structure is used
as an expression table to track stores which look interesting, and
might be moveable towards the exit block.   

Field Documentation

◆ antic_stores

◆ avail_stores

◆ hash_index

unsigned int st_expr::hash_index

◆ index

◆ next

◆ pattern

◆ pattern_regs

◆ reaching_reg

rtx st_expr::reaching_reg

Referenced by st_expr_entry().


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