Coalescer.xcc

Benoit Dupont de Dinechin (Benoit.Dupont-de-Dinechinst.com). Fabrice Rastello (Fabrice.Rastelloens-lyon.fr). Christophe Guillon (Christophe.Guillon@ens-lyon.fr).

Copyright 2002 - 2007 STMicroelectronics. Copyright 1995 - 1998 Commissariat a l'Energie Atomique.

This program is free software; you can redistribute it and/or modify it under the terms of either (at your option): the GNU General Public License (GPL) version 2; the GNU Lesser General Public License (LGPL) version 2.1; any later version of these licences as published by the Free Software Foundation.

Coalescer -- Base class for SSA-based coalescer.

struct Coalescer_;
Coalescer_congruences— For use by Coalescer_CONGRUENCES_FOREACH_VariableClass.
IBList
Coalescer_congruences(Coalescer this);
Coalescer_CONGRUENCES_FOREACH_VariableClass— Iterate this Coalescer VariableClass(es).
#define Coalescer_CONGRUENCES_FOREACH_VariableClass(this, congruence) \
  IBList_FOREACH(Coalescer_congruences(this), VariableClass_, congruence)
#define Coalescer_CONGRUENCES_ENDEACH_VariableClass \
  IBList_ENDEACH;

Type of filtering functions for Coalescer

typedef bool (*CoalescerFilter)(Variable, VariableClass, Variable, VariableClass);
Coalescer_mergePhiCongruences— Merge the congruence classes of Operation operands.
void
Coalescer_mergePhiCongruences(Coalescer this, Operation operation, CoalescerFilter filter);
Coalescer_mergeCopyCongruences— Merge the congruence classes of copy operation.
void
Coalescer_mergeCopyCongruences(Coalescer this, Operation operation, CoalescerFilter filter);
Coalescer_emptyClasses— Initialize Congruence Classes to NULL.
void
Coalescer_emptyClasses(Coalescer this);
Coalescer_fillFromWebs— Fill this Coalescer CONGRUENCES using the Variable web links.
void
Coalescer_fillFromWebs(Coalescer this);