X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fbe%2Fbeifg.h;h=275be325830892579ce9d76b9cbe8ca0f4ea3885;hb=6ee1fce95429dbf57fda4455ca5f2cf011ac8190;hp=e0dbaa7fb8b94f998fde0c9078a4b1506551e4c4;hpb=91b30739e3275be5d0c55e28c8ec79799862e600;p=libfirm diff --git a/ir/be/beifg.h b/ir/be/beifg.h index e0dbaa7fb..275be3258 100644 --- a/ir/be/beifg.h +++ b/ir/be/beifg.h @@ -1,20 +1,6 @@ /* - * 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. + * Copyright (C) 2012 University of Karlsruhe. */ /** @@ -62,15 +48,12 @@ typedef struct cliques_iter_t { } cliques_iter_t; void be_ifg_free(be_ifg_t *ifg); -int be_ifg_connected(const be_ifg_t *ifg, const ir_node *a, - const ir_node *b); ir_node *be_ifg_neighbours_begin(const be_ifg_t *ifg, neighbours_iter_t *iter, const ir_node *irn); ir_node *be_ifg_neighbours_next(neighbours_iter_t *iter); void be_ifg_neighbours_break(neighbours_iter_t *iter); -ir_node *be_ifg_nodes_begin(const be_ifg_t *ifg, nodes_iter_t *iter); +nodes_iter_t be_ifg_nodes_begin(be_ifg_t const *ifg); ir_node *be_ifg_nodes_next(nodes_iter_t *iter); -void be_ifg_nodes_break(nodes_iter_t *iter); int be_ifg_cliques_begin(const be_ifg_t *ifg, cliques_iter_t *iter, ir_node **buf); int be_ifg_cliques_next(cliques_iter_t *iter); @@ -80,8 +63,10 @@ int be_ifg_degree(const be_ifg_t *ifg, const ir_node *irn); #define be_ifg_foreach_neighbour(ifg, iter, irn, pos) \ for (ir_node *pos = be_ifg_neighbours_begin(ifg, iter, irn); pos; pos = be_ifg_neighbours_next(iter)) -#define be_ifg_foreach_node(ifg, iter, pos) \ - for (ir_node *pos = be_ifg_nodes_begin(ifg, iter); pos; pos = be_ifg_nodes_next(iter)) +#define be_ifg_foreach_node(ifg, pos) \ + for (bool pos##__once = true; pos##__once;) \ + for (nodes_iter_t pos##__iter = be_ifg_nodes_begin(ifg); pos##__once; pos##__once = false) \ + for (ir_node *pos; (pos = be_ifg_nodes_next(&pos##__iter));) #define be_ifg_foreach_clique(ifg, iter, buf, count) \ for(*(count) = be_ifg_cliques_begin(ifg, iter, buf); \