X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fana%2Firextbb_t.h;h=00daa8dc00baa55eeb6777b8cc64f325ca0e5d30;hb=ebdaa596d904a0651c8d794481288d2d629bdb3a;hp=6019501f1b44c66493840fa96ce39b43c1ea61b8;hpb=4fdc15b9e6c98c35906c0b3307e07766b3b13264;p=libfirm diff --git a/ir/ana/irextbb_t.h b/ir/ana/irextbb_t.h index 6019501f1..00daa8dc0 100644 --- a/ir/ana/irextbb_t.h +++ b/ir/ana/irextbb_t.h @@ -1,26 +1,32 @@ /* - * Project: libFIRM - * File name: ir/ana/irextbb_t.h - * Purpose: Extended basis block support. - * Author: Michael Beck - * Modified by: - * Created: 5.2005 - * CVS-ID: $Id$ - * Copyright: (c) 2002-2005 Universität Karlsruhe - * Licence: This file protected by GPL - GNU GENERAL PUBLIC LICENSE. + * Copyright (C) 1995-2008 University of Karlsruhe. All right reserved. + * + * This file is part of libFirm. + * + * This file may be distributed and/or modified under the terms of the + * GNU General Public License version 2 as published by the Free Software + * Foundation and appearing in the file LICENSE.GPL included in the + * packaging of this file. + * + * Licensees holding valid libFirm Professional Edition licenses may use + * this file in accordance with the libFirm Commercial License. + * Agreement provided with the Software. + * + * This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE + * WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE. */ /** - * @file irextbb_t.h - * - * Computes extended basic blocks. - * - * @author Michael Beck + * @file + * @brief Extended basis block support -- private header + * @author Michael Beck + * @date 5.2005 + * @version $Id$ */ -#ifndef _IREXTBB_T_H_ -#define _IREXTBB_T_H_ +#ifndef FIRM_ANA_IREXTBB_T_H +#define FIRM_ANA_IREXTBB_T_H -#include "firm_config.h" #include "irgraph_t.h" #include "irextbb.h" #include "irtools.h" @@ -29,114 +35,123 @@ * An extended block. */ struct _ir_extblk { - firm_kind kind; /**< k_ir_extblk */ - unsigned long visited; /**< visited flag */ - ir_node **blks; /**< blocks belonging to this extended block */ - void *link; /**< private link field */ + firm_kind kind; /**< k_ir_extblk */ + ir_visited_t visited; /**< visited flag */ + ir_node **blks; /**< blocks belonging to this extended block */ + void *link; /**< private link field */ }; +/** + * Checks whether a pointer points to a extended basic block. + * Intern version for libFirm. + */ +static inline int +_is_ir_extbb(const void *thing) { + return (get_kind(thing) == k_ir_extblk); +} /** * Gets the visited counter of an extended block. * Internal version for libFirm. */ -static INLINE unsigned long +static inline ir_visited_t _get_extbb_visited(const ir_extblk *blk) { - assert(blk); - return blk->visited; + assert(blk); + return blk->visited; } /** * Sets the visited counter of an extended block. * Internal version for libFirm. */ -static INLINE void -_set_extbb_visited(ir_extblk *blk, unsigned long visited) { - assert(blk); - blk->visited = visited; +static inline void +_set_extbb_visited(ir_extblk *blk, ir_visited_t visited) { + assert(blk); + blk->visited = visited; } /** * Mark an extended block as visited in a graph. * Internal version for libFirm. */ -static INLINE void +static inline void _mark_extbb_visited(ir_extblk *blk) { - assert(blk); - blk->visited = current_ir_graph->block_visited; + assert(blk); + blk->visited = current_ir_graph->block_visited; } /** * Returns non-zero if an extended was visited. * Internal version for libFirm. */ -static INLINE int +static inline int _extbb_visited(const ir_extblk *blk) { - assert(blk); - return blk->visited >= current_ir_graph->block_visited; + assert(blk); + return blk->visited >= current_ir_graph->block_visited; } /** * Returns non-zero if an extended block was NOT visited. * Internal version for libFirm. */ -static INLINE int +static inline int _extbb_not_visited(const ir_extblk *blk) { - assert(blk); - return blk->visited < current_ir_graph->block_visited; + assert(blk); + return blk->visited < current_ir_graph->block_visited; } /** * Returns the link field of an extended block. * Internal version for libFirm. */ -static INLINE void * +static inline void * _get_extbb_link(const ir_extblk *blk) { - assert(blk); - return blk->link; + assert(blk); + return blk->link; } /** * Sets the link field of an extended block. * Internal version for libFirm. */ -static INLINE void +static inline void _set_extbb_link(ir_extblk *blk, void *link) { - assert(blk); - blk->link = link; + assert(blk); + blk->link = link; } /** * Return the number of basis blocks of an extended block */ -static INLINE int +static inline int _get_extbb_n_blocks(const ir_extblk *blk) { - assert(blk); - return ARR_LEN(blk->blks); + assert(blk); + return ARR_LEN(blk->blks); } /** * Return the i'th basis block of an extended block */ -static INLINE ir_node * -_get_extbb_block(ir_extblk *blk, int pos) +static inline ir_node * +_get_extbb_block(const ir_extblk *blk, int pos) { - assert(blk && 0 <= pos && pos < _get_extbb_n_blocks(blk)); - return blk->blks[pos]; + assert(blk && 0 <= pos && pos < _get_extbb_n_blocks(blk)); + return blk->blks[pos]; } /** * Return the leader basis block of an extended block */ -static INLINE ir_node * -_get_extbb_leader(ir_extblk *blk) +static inline ir_node * +_get_extbb_leader(const ir_extblk *blk) { - return blk->blks[0]; + return blk->blks[0]; } -#define get_extbb_visited(blk) _get_extbb_visited(blk) -#define set_extbb_visited(blk, v) _set_extbb_visited(blk, v) -#define mark_extbb_visited(blk) _mark_extbb_visited(blk) +#define is_ir_extbb(thing) _is_ir_extbb(thing) +#define get_extbb_visited(blk) _get_extbb_visited(blk) +#define set_extbb_visited(blk, v) _set_extbb_visited(blk, v) +#define mark_extbb_visited(blk) _mark_extbb_visited(blk) #define extbb_visited(blk) _extbb_visited(blk) #define extbb_not_visited(blk) _extbb_not_visited(blk) #define get_extbb_link(blk) _get_extbb_link(blk) @@ -144,4 +159,4 @@ _get_extbb_leader(ir_extblk *blk) #define get_extbb_n_blocks(blk) _get_extbb_n_blocks(blk) #define get_extbb_leader(blk) _get_extbb_leader(blk) -#endif /* _IREXTBB_H_ */ +#endif