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

Data Fields

rtx pattern
rtx pattern_regs
rtx antic_stores
rtx avail_stores
struct st_exprnext
int index
unsigned int hash_index
rtx reaching_reg

Detailed Description

@verbatim 

Store motion via Lazy Code Motion on the reverse CFG. Copyright (C) 1997-2013 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).
   - antic_stores and avail_stores should be VECs instead of lists.
   - 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

rtx st_expr::antic_stores
     INSN list of stores that are locally anticipatable.  

Referenced by compute_store_table(), find_moveable_store(), insert_store(), and store_killed_before().

rtx st_expr::avail_stores
     INSN list of stores that are locally available.  
unsigned int st_expr::hash_index
     Hash value for the hash table.  
int st_expr::index
     Store ID in the dataflow bitmaps.  

Referenced by insert_insn_start_basic_block(), and insert_store().

struct st_expr* st_expr::next
     Next in the list.  
rtx st_expr::pattern
     Pattern of this mem.  

Referenced by insert_store().

rtx st_expr::pattern_regs
     List of registers mentioned by the mem.  

Referenced by store_killed_before().

rtx st_expr::reaching_reg
     Register holding the stored expression when a store is moved.
     This field is also used as a cache in find_moveable_store, see
     LAST_AVAIL_CHECK_FAILURE below.  

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