* @version 09.06.2002
* @version $Id$
*/
-#ifdef HAVE_CONFIG_H
-# include "config.h"
-#endif
+#include "config.h"
#include "rta.h"
*/
static ir_graph *get_implementing_graph (ir_entity *method)
{
-#if 0
- ir_graph *graph = get_entity_irg ((ir_entity*) method);
-
- /* Search upwards in the overwrites graph. */
- /* GL: this will not work for multiple inheritance */
- if (NULL == graph) {
- int i;
- int n_over = get_entity_n_overwrites ((ir_entity*) method);
-
- for (i = 0; (NULL == graph) && (i < n_over); i ++) {
- ir_entity *over = get_entity_overwrites ((ir_entity*) method, i);
- graph = get_implementing_graph (over);
- }
- }
-
- /* GL this is not valid in our remove irg algorithm ... which we removed by now ... */
- assert(get_entity_peculiarity(method) == peculiarity_description
- || graph == get_entity_irg(get_SymConst_entity(get_atomic_ent_value(method))));
-
- /* we *must* always return a graph != NULL, *except* when we're used
- inside remove_irg or force_description */
- /* assert (graph && "no graph"); */
-
- return (graph);
-#else
ir_graph *graph = NULL;
if (get_entity_peculiarity(method) != peculiarity_description)
graph = get_entity_irg(get_SymConst_entity(get_atomic_ent_value(method)));
return graph;
-#endif
}
/**
abstract now. Pretend that it wasn't there at all, and every
entity that used to inherit this entity's graph is now abstract.
*/
-/* Since we *know* that this entity will not be called, this is OK. */
-static void force_description (ir_entity *ent, ir_entity *addr)
-{
- int i, n_over = get_entity_n_overwrittenby (ent);
-
- set_entity_peculiarity (ent, peculiarity_description);
-
- for (i = 0; i < n_over; i ++) {
- ir_entity *over = get_entity_overwrittenby (ent, i);
-
- if (peculiarity_inherited == get_entity_peculiarity (over)) {
- /* We rely on the fact that cse is performed on the const_code_irg. */
- ir_entity *my_addr = get_SymConst_entity(get_atomic_ent_value(over));
-
- if (addr == my_addr) {
- force_description (over, addr);
- }
- } else if (peculiarity_existent == get_entity_peculiarity (over)) {
- /* check whether 'over' forces 'inheritance' of *our* graph: */
- ir_node *f_addr = get_atomic_ent_value (over);
- ir_entity *impl_ent = get_SymConst_entity (f_addr);
-
- assert ((get_irn_op(f_addr) == op_SymConst) && "can't do complex addrs");
- if (impl_ent == addr) {
- assert (0 && "gibt's denn sowas");
- force_description (over, addr);
- }
- }
- }
-}
/**
Initialize the static data structures.
* Changes the peculiarity of entities that represents
* dead graphs to peculiarity_description.
*/
-static void make_entity_to_description(type_or_ent *tore, void *env) {
+static void make_entity_to_description(type_or_ent tore, void *env) {
(void) env;
- if (get_kind(tore) == k_entity) {
- ir_entity *ent = (ir_entity *)tore;
+ if (is_entity(tore.ent)) {
+ ir_entity *ent = tore.ent;
if ((is_Method_type(get_entity_type(ent))) &&
(get_entity_peculiarity(ent) != peculiarity_description) &&
int rem_vpi = get_visit_pseudo_irgs();
set_visit_pseudo_irgs(1);
- dead_graphs = xmalloc(sizeof(*dead_graphs) * get_irp_n_irgs());
+ dead_graphs = XMALLOCN(ir_graph*, get_irp_n_irgs());
for (i = 0; i < n_graphs; i++) {
graph = get_irp_irg(i);
}
}
}
-
-
-/*
- * $Log$
- * Revision 1.41 2007/03/22 10:39:33 matze
- * a bunch of fixes to make firm work with NDEBUG and without DEBUG_libfirm
- *
- * Revision 1.40 2007/01/16 15:45:15 beck
- * renamed type opcode to ir_opcode
- *
- * Revision 1.39 2006/12/13 13:15:12 beck
- * renamed entity -> ir_entity
- *
- * Revision 1.38 2006/12/12 16:12:05 beck
- * Fixed missing initialization
- *
- * Revision 1.37 2006/12/11 15:28:48 matze
- * - Several warning fixes
- * - Fixes for compilation without DEBUG_libfirm
- * - Fixed for compilation without WITH_LIBCORE (but it's still broken)
- *
- * Revision 1.36 2006/06/05 15:58:12 beck
- * added support for Thread local storage
- * added more doxygen docu
- *
- * Revision 1.35 2006/01/13 21:51:59 beck
- * renamed all types 'type' to 'ir_type'
- *
- * Revision 1.34 2006/01/02 15:01:16 beck
- * missing include added
- *
- * Revision 1.33 2005/11/17 17:26:57 beck
- * removed bool type and depency from stdbool.h (not C89)
- *
- * Revision 1.32 2005/01/05 14:24:52 beck
- * renames all is_x*_type() functions to is_X*_type() to prevent name clash with EDG frontend
- *
- * Revision 1.31 2004/12/21 13:45:14 beck
- * removed C99 constructs
- *
- * Revision 1.30 2004/12/02 16:16:11 beck
- * fixed config.h include
- * used xmalloc instead of malloc
- *
- * Revision 1.29 2004/11/11 13:28:08 goetz
- * made pseudo irg aware
- *
- * Revision 1.28 2004/11/03 14:47:18 beck
- * removed gloval intraprocedural_view variable and replaced by get_*() set_*() functions
- *
- * Revision 1.27 2004/10/21 07:23:34 goetz
- * comments
- *
- * Revision 1.26 2004/10/20 14:59:27 liekweg
- * Removed ecg
- *
- * Revision 1.25 2004/10/18 12:47:08 liekweg
- * avoid warning
- *
- * Revision 1.24 2004/09/24 13:59:04 beck
- * fixed doxygen comments, removed initialization for description entities
- *
- * Revision 1.23 2004/08/19 16:51:02 goetz
- * fixed some errors, pushed closer to inteded firm semantics
- *
- * Revision 1.22 2004/08/13 08:57:15 beyhan
- * normalized names of functions, enums ...
- * added suffix as argument to dumpers, removed global variable
- * removed support for tarval/Const
- *
- * Revision 1.21 2004/07/08 15:50:56 goetz
- * firmstat added
- *
- * Revision 1.20 2004/07/08 11:17:40 goetz
- * *** empty log message ***
- *
- * Revision 1.19 2004/07/06 12:30:37 beyhan
- * new SymConst semantics
- *
- * Revision 1.18 2004/06/27 21:17:41 liekweg
- * Added comment
- *
- * Revision 1.17 2004/06/25 13:45:13 liekweg
- * observe stickyness; minor refactoring
- *
- * Revision 1.16 2004/06/24 06:42:14 goetz
- * test of firm flags
- *
- * Revision 1.15 2004/06/18 15:47:19 liekweg
- * minor bug fix (go forward, not backward) --flo
- *
- * Revision 1.14 2004/06/18 13:12:43 liekweg
- * final bug fix (calls via consts)
- *
- * Revision 1.13 2004/06/17 16:34:33 liekweg
- * removed DD*s
- *
- * Revision 1.12 2004/06/17 16:33:33 liekweg
- * minor bug fix
- *
- * Revision 1.11 2004/06/17 14:21:13 liekweg
- * major bugfix
- *
- * Revision 1.10 2004/06/17 10:31:41 goetz
- * irscc: bugfix, can now deal with loops not reachable from start
- * cgana: bugfix, skip_Tuple
- * rta: improved
- *
- * Revision 1.9 2004/06/17 08:56:03 liekweg
- * Fixed typos in comments
- *
- * Revision 1.8 2004/06/17 08:33:01 liekweg
- * Added comments; added remove_irg
- *
- * Revision 1.6 2004/06/14 13:02:03 goetz
- * bugfixesbug
- *
- * Revision 1.5 2004/06/13 15:03:45 liekweg
- * RTA auf Iterative RTA aufgebohrt --flo
- *
- * Revision 1.4 2004/06/12 19:35:04 liekweg
- * Kommentare eingef"ugt --flo
- *
- * Revision 1.3 2004/06/12 17:09:46 liekweg
- * RTA works, outedges breaks. "Yay." --flo
- *
- * Revision 1.2 2004/06/11 18:25:39 liekweg
- * Added todo
- *
- * Revision 1.1 2004/06/11 18:24:18 liekweg
- * Added RTA --flo
- *
- */