X-Git-Url: http://git.sourceforge.jp/view?a=blobdiff_plain;f=gcc%2Fdomwalk.h;h=63aeec233a363478283e4dac3acb1b9bfb68f379;hb=c1dd686740946b2a63640d51cafaf66a58199820;hp=53a872e34fc5204e08b65c183cf121075ccd5cdf;hpb=0c6d8c366480c5cdf12880f53c0f415b40817e7c;p=pf3gnuchains%2Fgcc-fork.git diff --git a/gcc/domwalk.h b/gcc/domwalk.h index 53a872e34fc..63aeec233a3 100644 --- a/gcc/domwalk.h +++ b/gcc/domwalk.h @@ -1,12 +1,12 @@ /* Generic dominator tree walker - Copyright (C) 2003, 2004 Free Software Foundation, Inc. + Copyright (C) 2003, 2004, 2005, 2007, 2008 Free Software Foundation, Inc. Contributed by Diego Novillo 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 2, or (at your option) +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, @@ -15,9 +15,12 @@ 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 COPYING. If not, write to -the Free Software Foundation, 59 Temple Place - Suite 330, -Boston, MA 02111-1307, USA. */ +along with GCC; see the file COPYING3. If not see +. */ + +typedef void *void_p; +DEF_VEC_P(void_p); +DEF_VEC_ALLOC_P(void_p,heap); /* This is the main data structure for the dominator walker. It provides the callback hooks as well as a convenient place to hang block local @@ -31,15 +34,6 @@ struct dom_walk_data dominator tree. */ ENUM_BITFIELD (cdi_direction) dom_direction : 2; - /* Nonzero if the statement walker should walk the statements from - last to first within a basic block instead of first to last. - - Note this affects both statement walkers. We haven't yet needed - to use the second statement walker for anything, so it's hard to - predict if we really need the ability to select their direction - independently. */ - BOOL_BITFIELD walk_stmts_backward : 1; - /* Function to initialize block local data. Note that the dominator walker infrastructure may provide a new @@ -52,41 +46,11 @@ struct dom_walk_data void (*initialize_block_local_data) (struct dom_walk_data *, basic_block, bool); - /* Function to call before the statement walk occurring before the - recursive walk of the dominator children. - - This typically initializes an block local data and pushes that - data onto BLOCK_DATA_STACK. */ - void (*before_dom_children_before_stmts) (struct dom_walk_data *, - basic_block); - - /* Function to call to walk statements before the recursive walk - of the dominator children. */ - void (*before_dom_children_walk_stmts) (struct dom_walk_data *, - basic_block, block_stmt_iterator); - - /* Function to call after the statement walk occurring before the - recursive walk of the dominator children. */ - void (*before_dom_children_after_stmts) (struct dom_walk_data *, - basic_block); - - /* Function to call before the statement walk occurring after the - recursive walk of the dominator children. */ - void (*after_dom_children_before_stmts) (struct dom_walk_data *, - basic_block); - - /* Function to call to walk statements after the recursive walk - of the dominator children. */ - void (*after_dom_children_walk_stmts) (struct dom_walk_data *, - basic_block, block_stmt_iterator); - - /* Function to call after the statement walk occurring after the - recursive walk of the dominator children. + /* Function to call before the recursive walk of the dominator children. */ + void (*before_dom_children) (struct dom_walk_data *, basic_block); - This typically finalizes any block local data and pops - that data from BLOCK_DATA_STACK. */ - void (*after_dom_children_after_stmts) (struct dom_walk_data *, - basic_block); + /* Function to call after the recursive walk of the dominator children. */ + void (*after_dom_children) (struct dom_walk_data *, basic_block); /* Global data for a walk through the dominator tree. */ void *global_data; @@ -94,7 +58,7 @@ struct dom_walk_data /* Stack of any data we need to keep on a per-block basis. If you have no local data, then BLOCK_DATA_STACK will be NULL. */ - varray_type block_data_stack; + VEC(void_p,heap) *block_data_stack; /* Size of the block local data. If this is zero, then it is assumed you have no local data and thus no BLOCK_DATA_STACK as well. */ @@ -103,8 +67,8 @@ struct dom_walk_data /* From here below are private data. Please do not use this information/data outside domwalk.c. */ - /* Stack of available block local structures. */ - varray_type free_block_data; + /* Stack of available block local structures. */ + VEC(void_p,heap) *free_block_data; }; void walk_dominator_tree (struct dom_walk_data *, basic_block);