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

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(), and insert_store().

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.

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: